代码之家  ›  专栏  ›  技术社区  ›  a_mole

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

  •  0
  • a_mole  · 技术社区  · 15 年前

    我正在对位图图像(c)使用CopyPixels方法,并希望获得原始像素数据。但是,当我检查调试器中的原始缓冲区时,我发现前8个字节总是 (十六进制)

    67174944 00300万

    下面是代码片段:

    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 回复  |  直到 15 年前
        1
  •  0
  •   Hans Passant    15 年前

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

        2
  •  0
  •   ptahmose    15 年前

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

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

    rawPixels = new byte[stride * frm.PixelHeight]