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

C# C:CopyPixels复制的前8个字节是否包含头?,c#,imaging,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.P

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

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

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

步幅的计算对我来说很奇怪。那怎么办

stride = ((stride+3)/4)*4;
接下来,我想应该读取rawPixels缓冲区的大小

rawPixels = new byte[stride * frm.PixelHeight]

你怎么从0x6717得到DI?是的,我不知道。我查看了调试器中的hex窗口和右边的文本列,它们总是说DI。我看得不够仔细。哦,好的,是4944,不是6717,这是DI。