问题 位图文件头大小


我是编程bmp文件的新手,我检查了这个网站,了解bmp标题.. http://www.daubnet.com/en/file-format-bmp

似乎bmp文件的标题是54个字节。

使用paint,我创建了一个简单的10x10图像,并将其保存为24位。 所以根据简单的数学运算,文件大小应该是10 * 10 * 3 + 54 = 354字节。

但十六进制编辑器和文件资源管理器返回的大小为374字节。

所以我有20个字节的差异,我不知道为什么。

你能告诉我为什么好吗?

非常感谢!!


6993
2017-09-09 06:23


起源

填充对齐?使用 SizeOf 而不是自己计算。 (此外,如果您提到您正在询问的编程语言,它会有所帮助;它可以更容易地提供答案。) - Ken White
好吧,他正在使用MSPaint,而不是编程语言:) - nneonneo
@nneonneo:“我是编程bmp文件的新手”是这个问题的开头句。 - Ken White


答案:


BMP中的行填充为4个字节的倍数。

没有填充,每行是3 * 10 = 30字节。使用填充,每行为32个字节,因此图像数据的大小为320字节。因此,文件大小为54 + 320 = 374字节。


12
2017-09-09 06:25



嗨,非常感谢您的回答。这是有道理的...但在我的程序中,我有一个10x10像素的矩阵,每个像素是RGB。所以我有额外的20个字节的栅格数据来计算?我有点困惑......再次感谢你的帮助! - user1657743
@ user1657743:您不必在填充中放置任何特定内容;它只是垃圾字节,没有人(除了摄影师)会看到。 - nneonneo