1bpp单色BMP

4
我运行了一个演示bmp文件格式的辅助程序"DDDemo.exe",帮助我可视化一个32x1像素bmp文件(单色)。我对两个头部部分没问题,但好像不理解颜色表和像素位部分。我制作了两个32x1像素bmp文件来帮助我比较(请参见附件)。

one black then one white pixel etc

16 black pixels then 16 white pixels

有人能帮我理解“像素位”与颜色映射的关系吗?
更新:经过一些试验和错误,我终于能够编写一个32x1像素单色BMP。虽然它的像素位与附加的图像不同,但这个工具帮助了我理解头部和颜色映射的概念。感谢大家的帮助。

位图的 ClrUsed = 0,即使它们具有具有 2 个条目的调色板。我猜这足以把那个程序搞得一团糟。 - Hans Passant
0biClrUsed的一个完全有效的值: "如果biClrUsed为零,则该数组包含给定位深度的最大颜色数;也就是说,2^biBitCount种颜色". - IInspectable
2个回答

3

PIXEL BITS 中的未设置位指的是第一个颜色表条目(0,0,0),即黑色,而设置位指的是第二个颜色表条目(ff,ff,ff),即白色。

“每像素1比特(1bpp)格式支持2种不同的颜色(例如:黑色和白色,或黄色和粉色)。像素值存储在每个比特中,第一个(最左边的)像素存储在第一个字节的最高有效位中。每个比特都是一个指向2个颜色的表中的索引。该颜色表以32bpp 8.8.8.0.8 RGBAX格式呈现。未设置的位将引用第一个颜色表条目,而设置的位将引用最后(第二个)颜色表条目。”-BMP文件格式


我认为OP是在问你所写的内容与“像素位”中的数据如何相关。 - EboMike
不了解他的查看器对数据做了什么,很难知道。 - David Schwartz

2

这些图像的颜色表只是表示图像中有两种颜色:

  • 颜色0为(00, 00, 00) -- 纯黑色
  • 颜色1为(FF, FF, FF) -- 纯白色

然而,所显示的图像压缩方法(BI_RGB -- 未压缩)与给定的像素数据和图像不符。


有32个像素位,因此该数字似乎适用于未压缩的bi_rgb。但是AB 01 08 00从哪里来? - bzlm
这就是我不理解的地方。AB 01 08 00看起来像某种压缩数据,但与压缩方法不符。如果它真的是未压缩的,我会期望看到类似于00 00 FF FF的东西。 - user149341

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接