我试图了解图像大小是如何编码在位图文件头中的。wikipedia page只显示小于255字节的图像示例,因此大小以单个字节编码,后跟3个0字节。在
问题是,当我测试出更大的图像时,我无法将编码的字节与实际大小联系起来。在
$ identify bmp1.bmp
bmp1.bmp BMP3 10x10 10x10+0+0 1-bit sRGB 2c 102B 0.000u 0:00.000
$ identify bmp2.bmp
bmp2.bmp BMP3 92x76 92x76+0+0 1-bit sRGB 2c 974B 0.000u 0:00.000
^{pr2}$
如您所见,第一个图像有102个字节,文件头包含大小为102的编码。但是第二个图像有974个字节,文件头包含字节206和3。这是因为文件头大小不可靠,我不应该尝试从这些字节读取大小吗?否则,如何从206和3中计算974?在
这是endianness的问题。BMP uses little-endian encoding,因此首先读取最低有效字节:
102=(102*2560)+(0*2561)+(0*2562)+(0*2563)
=102
974=(206*2560)+(3*2561)+(0*2562)+(0*2563)
=206+(3*256)
相关问题 更多 >
编程相关推荐