了解.bmp文件

时间:2015-11-02 17:46:10

标签: image bitmap bitmapimage bmp

我有一个.bmp文件

我有点理解,有些不明白。我知道前14个字节是我的Bitmapfileheader。我进一步了解我的Bitmapinfoheader也包含有关位图的信息,大约40字节(在版本3中)。

我不明白的是,信息是如何存储在那里的。 我有这个图像: enter image description here

为什么所有的颜色信息都存储在" FF"?我知道" 00"是" Junk Bytes"。我不明白的原因是为什么" FF"?!

此外,我不明白什么类型的"编码"那是? 42 4D等于" BM"。那是什么?我如何将我看到的内容翻译成颜色,字母或数字?!

在这种情况下我能读到的内容:

BITMAPFILEHEADER

前2个字节。 BM如果是.bmp文件:42 4D = BM(但是42 4D转换为BM)

Next 4 Bytes:位图的大小。 BA 01 00 00.不知道应该是多大的尺寸。

下一个4字节:保留一些东西。

下一个4字节:偏移(不太明白)

BITMAPINFOHEADER

Next 4 Bytes:bitmapinfoheader的大小。 6C 00 00 00在这里。

下一个4字节:.bmp的宽度。 0A 00 00 00.我知道自从我创建该文件以来,它必须是10px。

下一个4字节:.bmp的高度。 0A 00 00 00.我知道自从我创建该文件以来,它必须是10px。

下一页2字节:来自其他文件格式的内容。

接下来的两个字节:颜色深度。 18 00 00 00.我认为只能通过1,2,4,8,16,24,32?

1 个答案:

答案 0 :(得分:1)

您看到的前2个字节的信息" 42 4D"是我们所说的神奇数字。它们是文件的签名,42 4d是二进制的01000010 01001101的十六进制表示法。 每个文件都有一个.jpg,.gif。你懂了。

这是一张图片,说明了54字节(24位BMP)的BMP完整标题。

WP Codex

BMP的总大小由标题的大小+ BMP.width x BMP.height * 3计算(红色为1个字节,绿色为1个字节,蓝色为1个字节 - 在8位信息的情况下每个频道)+填充(如果存在)。

您引用的垃圾字节是填充,如果每条扫描线(行)的大小不是4的倍数,则需要它们。

白色十六进制表示法getopt,是前两个红色,绿色和蓝色。 在十进制表示法中,每个通道的值都为255,因为2 ^ 8(8位)-1 = 255。

希望这会为你清除一点(非意图双关语)。