我正在尝试理解基于c ++中的原始数据构建bmp,我有几个问题。
我的bmp可以是黑白的,所以我认为在每像素位字段中我应该使用1.然而在很多指南中我看到填充字段添加了位数以保持32位对齐,这意味着我的bmp与每像素bmp的文件大小相同。
这种理解是正确的还是在某种程度上是每像素1位小于24,32等?
由于
答案 0 :(得分:1)
单色位图也是对齐的,但它们不会占用24/32-bpp的空间。
因此,单色位图当然会小于24位。
答案 1 :(得分:1)
上面已经给出了答案(位图行被对齐/填充到32位边界),但是如果您想要更多信息,可能需要阅读DIBs and Their Uses,“DIB标题”部分 - 它详细解释。
每条扫描线都是DWORD对齐的。扫描线被缓冲到对齐;缓冲不一定是0。
扫描线上下颠倒存储,内存中的第一次扫描(扫描0)是图像中最下面的扫描。 (参见图1.)这是Presentation Manager兼容性的另一个工件。 GDI在Set和Get操作期间自动反转图像。图1.(显示内存和屏幕表示的嵌入式图像。)