我有一个.bmp文件
我有点理解,但有点不明白。我知道前14个字节是我的Bitmapfileheader。我还进一步了解到,我的Bitmapinfoheader也包含关于位图的信息,并且大约有40个字节大(在版本3中)。
我不明白的是,这些信息是如何储存在那里的。我有这样的形象:

为什么所有的颜色信息都存储在"FF“中?我知道"00“是”垃圾拜特斯“。我不明白的是为什么“FF”里有所有的东西?!
此外,我不明白什么类型的“编码”,即? 42 4D等于做"BM“。那是什么?我怎样才能把我在那里看到的东西翻译成颜色、字母或数字?!
在这种情况下我能读到的是:
Bitmapfileheader
前两个字节。BM如果是.bmp文件: 42 4D = BM (但是42 4D转换为BM)
接下来的4个字节:位图的大小。英航01 00。不知道应该有多大尺寸。
接下来的4位:保留的东西。
接下来的4位字节:偏移(不太明白)
Bitmapinfoheader
接下来的4个字节:位图信息头的大小。六点到了。
接下来的4个字节:.bmp的宽度。0:00。我知道既然我创建了这个文件,那一定是10 be。
接下来的4个字节:.bmp的高度。0:00。我知道既然我创建了这个文件,那一定是10 be。
下一个2字节:来自另一种文件格式的东西。
下两个拜特斯:颜色深度。一千八点。我以为只有1,2,4,8,16,24,32?
发布于 2016-10-06 18:39:25
前两个字节的信息,你看到的"42,4D“,是我们所谓的魔术数字。它们是文件的签名,42d是二进制01000010 01001101的十六进制表示法。每个文件都有一个,.jpg,.gif。你就明白了。
这是一个图像,说明一个BMP完整的头54个字节(24位BMP).
BMP头
BMP的总大小由头+ BMP.width x BMP.height *3的大小计算(红色1字节,绿色1字节,蓝色1字节-如果每个通道有8位信息)+填充(如果存在)。
您所指的垃圾字节是填充,如果每个scanline(行)的大小不是4的倍数,则需要它们。
白色的十六进制符号如果ffffff,是第两个红色,绿色和蓝色。在十进制表示法中,每个通道的值为255,因为2^8(8位) -1 = 255。
希望这为你清除一点(无意中的双关语)。
https://stackoverflow.com/questions/33483708
复制相似问题