我在BitMapImage(C#)上使用CopyPixels方法,并希望获取原始像素数据。但是,当我在调试器中检查原始缓冲区时,我发现前8个字节始终是 (十六进制)
67174944 00300000
这是代码片段:
int stride = frm.PixelWidth * frm.Format.BitsPerPixel / 8;
stride = (stride % 4) == 0 ? stride : (stride + 4);
rawPixels = new byte[stride * frm.PixelHeight * frm.Format.BitsPerPixel / 8];
frm.CopyPixels(rawPixels, stride, 0);
我找不到任何说明此标头可能的文档。有趣的是,相当于6717的文字是“DI”,这让我觉得这与DIB标题有关,但我很确定我错了。 感谢。
答案 0 :(得分:0)
您正在查看数组对象标头。将8添加到地址以查找数组元素。
答案 1 :(得分:0)
我不知道前8个字节有什么问题,但其他一些评论:
步幅的计算看起来很奇怪。
怎么样?stride = ((stride+3)/4)*4;
接下来,我想rawPixels-buffer的大小应该是
rawPixels = new byte[stride * frm.PixelHeight]