0

我在 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 标头有关,但我很确定我错了。谢谢。

4

2 回答 2

0

您正在查看数组对象标题。将地址加 8 以查找数组元素。

于 2010-11-28T19:34:17.183 回答
0

我不知道前 8 个字节有什么问题,但还有一些其他说明:

步幅的计算对我来说看起来很奇怪。关于什么

stride = ((stride+3)/4)*4;

接下来,我猜 rawPixels-buffer 的大小应该是

rawPixels = new byte[stride * frm.PixelHeight]
于 2010-11-28T19:40:25.623 回答