1
8 비트 회색조 이미지의 데이터를 어떻게 바이트 배열에 넣을 수 있습니까? 나는 다음과 같은 코드를 시도 :8 비트 그레이 스케일 이미지를 C#의 바이트 [] 배열로 변환하려면 어떻게해야합니까?
private byte[] loadBitmap(string filename, int width, int height)
{
byte[] data = new byte[width * height];
BitmapData bmpData = null;
Bitmap slice = new Bitmap(filename);
Rectangle rect = new Rectangle(0, 0, slice.Width, slice.Height);
bmpData = slice.LockBits(rect, ImageLockMode.ReadOnly, PixelFormat.Format8bppIndexed);
int size = bmpData.Height * bmpData.Stride;
System.Runtime.InteropServices.Marshal.Copy(bmpData.Scan0, data, 0, size);
slice.UnlockBits(bmpData);
return data;
}
을하지만 데이터 배열의 결과 때문에 Format8bppIndexed의 약간의 오차가 있습니다. 어떤 아이디어?
코드 샘플이 "내 컴퓨터에서 작동합니다". Format8bppIndexed는 8 비트 회색조의 경우에는 문제가 없습니다. 테스트 이미지의 너비는 얼마입니까? 소스 크기는'height * stride'이지만 목적지 크기는'width * height'뿐입니다. 따라서 DWORD 정렬로 인해 비트 맵에 패딩이 포함되어 있으면이 패딩이 복사되어 버퍼 오버런을 일으키는 것처럼 보입니다. –