이미지 데이터를 잘라낼 수 있습니다. 내가 알고있는 경우 :C#에서 이미지 데이터 잘라 내기
byte[] ImageData;
int width;
int height;
는 기본적으로 나는 byte[]
소스에서 이미지의 내부 섹션을 얼마나 찾아보십시오.
예를 들어 나는 w : 1000px 및 h : 600px 인 이미지를 가지고 있습니다. 그리고 byte[]
중간 섹션 200 * 200px를 byte[]
으로하고 싶습니다.
이미지 데이터를 잘라낼 수 있습니다. 내가 알고있는 경우 :C#에서 이미지 데이터 잘라 내기
byte[] ImageData;
int width;
int height;
는 기본적으로 나는 byte[]
소스에서 이미지의 내부 섹션을 얼마나 찾아보십시오.
예를 들어 나는 w : 1000px 및 h : 600px 인 이미지를 가지고 있습니다. 그리고 byte[]
중간 섹션 200 * 200px를 byte[]
으로하고 싶습니다.
먼저 당신은 당신의 배열의 바이트가 하나 개의 픽셀을 표현하는 방법을 알아야합니다. 다음은 픽셀 당 3 바이트의 RGB 이미지가 있다고 가정합니다.
그런 다음 절 결부의 왼쪽 상단을 나타내는 첫 번째 바이트의 배열 인덱스
y
컷 아웃의
y
-coordinate이다
int i = y * w + x
로 표현된다 w
은의 폭 전체 이미지와 x
은 컷 아웃의 좌표가 x
입니다. 마지막 행에 대한 첫 번째에서
// cw: The width of the cutout
// ch: The height of the cutout
// x1/y1: Top-left corner coordinates
byte[] cutout = new byte[cw * ch * 3]; // Byte array that takes the cutout bytes
for (int cy = y1; cy < y2; cy++)
{
int i = cy * w + x1;
int dest = (cy - y1) * cw * 3;
Array.Copy(imagebytes, i, cutout, dest, cw * 3);
}
이 반복 잘라하는 다음과 같이
그렇다면, 당신은 할 수 있습니다. 그런 다음 i
에서 이미지에서 잘라야 할 행의 첫 번째 바이트 인덱스를 계산합니다. dest
에서 바이트를 복사해야하는 cutout
의 색인을 계산합니다.
그 후 지정된 위치에 cutout
으로 잘라내 진 현재 행의 바이트를 복사합니다.
이 코드를 테스트하지는 않았지만 실제로 작동해야합니다. 또한 현재 범위 검사는 없습니다. 따라서 컷 아웃의 위치와 크기가 실제로 이미지 범위 내에 있는지 확인해야합니다.
당신이 이미지를 처음으로 변환 할 수 있다면, 당신은 내가 Bytes.Com 다음 코드는 나를 위해 작동
에서 발견이 코드를 사용할 수 있습니다. .gif를로드하고 gif의 30 x 30 섹션을 오프 스크린 비트 맵에 그린 다음 축척 된 이미지를 그림 상자로 그립니다.
System.Drawing.Image img=... create the image from the bye array ....
Graphics g1 = pictureBox1.CreateGraphics();
g1.DrawImage(img, 0, 0, img.Width, img.Height);
g1.Dispose();
Graphics g3 = Graphics.FromImage(bmp);
g3.DrawImageUnscaled(img, 0, 0, bmp.Width, bmp.Height);
Graphics g2 = pictureBox2.CreateGraphics();
g2.DrawImageUnscaled(bmp, 0, 0, bmp.Width, bmp.Height);
g2.Dispose();
g3.Dispose();
img.Dispose();
당신은 이미지로 바이트 []을 설정하는이 질문을 사용할 수 있습니다 : 모든 Convert a Byte array to Image in c# after modifying the array
응답을 보내 주셔서 감사합니다. 불행히도 System.Drawing을 사용하지 않으려 고하므로 Thorsten-dittmar 솔루션을 사용합니다. 낮은 수준의 .net 라이브러리 만 사용하기 때문입니다. 하지만 다시 고마워요 –
고마워요,이게 내가 원하는거야. –