C#:CopyPixels复制的前8个字节是否包含标题?

时间:2010-11-28 19:13:24

标签: c# imaging

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

步幅的计算看起来很奇怪。

怎么样?
stride = ((stride+3)/4)*4;

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

rawPixels = new byte[stride * frm.PixelHeight]