我正在扫描应用程序的低级别,我已经不是很舒服了:)
无论如何,我试图从我得到的数字中弄清楚。
开始了:
- 以 200 DPI、黑白扫描 Letter 尺寸的文档
- 分辨率高达 1700x2200
- 我计算 1700x2200 = 3740000 位或 467500 字节
- 当我得到 BITMAPINFOHEADER 时,它显示 biSizeImage = 475200。为什么?
- 我使用 BITMAP 返回字节数组的代码片段返回 475248 字节,多出 48 个字节。但是 biSize 说的是 40,所以如果 header 是 40,那么为什么图像数据前面有 48 个字节呢?
基本上,我不明白为什么在 BITMAPHEADER 中计算的 467500 和 475200 之间存在差异?
我也不明白为什么标题说它是 40 字节,但实际上它是 48?我只是猜测颜色信息是 8 个字节?因为图像是 2 色 (B/W) - 每种颜色使用 4 个字节?
编辑
这是信息:
我想我明白了。当扫描线保存在内存中时,它必须是 4 个字节的包。所以,根据我的计算,1700 位是 212.5 字节,根据我所看到的 - 它使用 216 字节。所以,有点道理。