난 단색 비트 맵 이미지를 갖는다. 나는이 같은 이미지를로드 :
Image image = Image.FromFile("myMonoChromeImage.bmp");
가 어떻게 1 초는 그 반대의 경우도 마찬가지 흰색 픽셀과 0은 검은 색 픽셀을 나타내는 표현, 또는 이진 배열을 얻을 수 있나요? 배열의 첫 번째 비트는 왼쪽 위의 픽셀이고 array의 마지막 비트는 오른쪽 아래의 픽셀입니다.
가능하면 효율적인 접근 방식이 좋습니다.
난 단색 비트 맵 이미지를 갖는다. 나는이 같은 이미지를로드 :
Image image = Image.FromFile("myMonoChromeImage.bmp");
가 어떻게 1 초는 그 반대의 경우도 마찬가지 흰색 픽셀과 0은 검은 색 픽셀을 나타내는 표현, 또는 이진 배열을 얻을 수 있나요? 배열의 첫 번째 비트는 왼쪽 위의 픽셀이고 array의 마지막 비트는 오른쪽 아래의 픽셀입니다.
가능하면 효율적인 접근 방식이 좋습니다.
LockBits를 사용하여 비트 맵 데이터에 액세스하고 비트 맵 배열에서 직접 값을 복사 할 수 있습니다. GetPixel은 매번 비트 맵을 잠금 및 잠금 해제하므로 효율적이지 않습니다.
당신은 바이트 배열로 데이터를 추출하고 그들이 흰색 있는지 확인하기 위해 RGBA 값을 확인 (255,255,255,255)를 또는 검은 색 (0,0,0,255)
BitmapData 클래스 샘플은이 작업을 수행하는 방법을 보여줍니다 수 있습니다 . 귀하의 경우 코드는 다음과 같습니다.
Rectangle rect = new Rectangle(0, 0, bmp.Width, bmp.Height);
BitmapData bmpData = bmp.LockBits(rect, ImageLockMode.ReadOnly, bmp.PixelFormat);
// Get the address of the first line.
IntPtr ptr = bmpData.Scan0;
// Declare an array to hold the bytes of the bitmap.
int bytes = Math.Abs(bmpData.Stride) * bmp.Height;
byte[] rgbValues = new byte[bytes];
// Copy the RGB values into the array.
System.Runtime.InteropServices.Marshal.Copy(ptr, rgbValues, 0, bytes);
// Unlock the bits.
bmp.UnlockBits(bmpData);
바이트 배열, 픽셀 형식 정보, 너비 및 높이만을 사용하여 다시 비트 맵으로 변환하는 방법은 무엇입니까? –
새로운 질문을하고 싶다면 그냥해야합니다. 거의 아무도 오래된 질문에 댓글을 달지 않습니다. 덧글에 적절한 대답, 게시물 코드 또는 예제를 제공하는 것도 불가능합니다. –
게다가, 아무것도 변환 할 필요가 없습니다. BitmapData는 특정 비트 맵의 데이터에서 작동합니다. 잠금을 해제하면 비트 맵을 사용할 수 있습니다. 이것은 링크 된 예제에도 표시됩니다. 완전히 다른 질문을하고 싶습니다. 원시 바이트에서 비트 맵을 만드는 법입니다. –
@Panagiotis Kanavos 위에서 언급 한 질문은 바이트 배열에 대한 것입니다. 미안하지만 각 바이트가 단색 비트 맵 (8 픽셀?)에서 무엇을 나타내는 지 모르겠습니다. –
이것은 찾고있는 질문/답변입니다. http://stackoverflow.com/questions/2593768/convert-a-image-to-a-monochrome-byte-array. –