我只想将以前加载的BMP-File转换为byte [] []。它对我自己的测试图像(白色背景上的一些黑点)非常有效,它们都是每像素8位格式。 现在我尝试了一些有人给我的位图相同的代码(也是黑色正方形,白色背景上的矩形),但它没有像我预期的那样工作:
我期望在结果数组中用白色像素表示255(并且黑色只有0),但我在那里找到了不同的值。在一种情况下,应该是白色的像素在数组中以值1结束。
同样,所有这些文件都是8位颜色深度。 另外,我注意到,当我在绘画中打开图像时,再次将它们保存为256色位图,然后它就可以了。 所以我的问题是:
是什么导致了这个问题? (调色板可能起作用吗?) 我怎样才能让它发挥作用?
这是我的业余代码:
public byte[][] ConvertImageToArray (BitmapSource Image)
{
byte[][] Result = null;
if (Image != null)
{
int Index = 0;
int size = Image.PixelWidth * Image.PixelHeight * Image.Format.BitsPerPixel/8;
byte[] RawImg = new byte[size];
BitmapPalette test = Image.Palette;
int stride = (Image.PixelWidth * Image.Format.BitsPerPixel) / 8;
Image.CopyPixels(RawImg, stride, 0);
Result = new byte[Image.PixelHeight][];
int Width = Image.PixelWidth;
for (int i = 0; i < Result.Length; i++)
{
Result[i] = new byte[Width];
for (int k = 0; k < Result[i].Length; k++)
{
Result[i][k] = RawImg[Index++];
}
}
}
return Result;
}