BMP 位图图像格式简介
1. 文件结构
位图文件可看成由 4 个部分组成:位图文件头(bitmap-file header)、位图信息头(bitmap-information
header)、彩色表(color table)和定义位图的字节阵列,它具有如下所示的形式。
位图文件的组成 结构名称 符号
位图文件头(bitmap-file header)
BITMAPFILEHEADER bmfh
位图信息头(bitmap-information header)
BITMAPINFOHEADER bmih
彩色表(color table)
RGBQUAD aColors[]
图象数据阵列字节
BYTE aBitmapBits[]
位图文件结构可综合在表 1 中。
偏移量 域的名称 大小 内容
图
像
文
件
头
0000h
文件标识
2 byte
两字节的内容用来识别位图的类型:
‘BM’ : Windows 3.1x, 95, NT, …
‘BA’ :OS/2 Bitmap Array
‘CI’ :OS/2 Color Icon
‘CP’ :OS/2 Color Pointer
‘IC’ : OS/2 Icon
‘PT’ :OS/2 Pointer
注:因为 OS/2 系统并没有被普及开,所以在编程
时,你只需判断第一个标识“BM”就行。
0002h File Size 1 dword
用字节表示的整个文件的大小
0006h Reserved 1 dword
保留,必须设置为 0
000Ah Bitmap Data Offset 1 dword
从文件开始到位图数据开始之间的数据 (bitmap
data)之间的偏移量
图
像
信
息
头
000Eh Bitmap Header Size 1 dword
位图信息头(Bitmap Info Header)的长度,用来描
述位图的颜色、压缩方法等。下面的长度表示:
28h - Windows 3.1x, 95, NT, …
0Ch - OS/2 1.x
F0h - OS/2 2.x
注:在 Windows95、98、2000 等操作系统中,位
图信息头的长度并不一定是 28h,因为微软已经
制定出了新的 BMP 文件格式,其中的信息头结构
变化比较大,长度加长。所以最好不要直接使用
常数 28h,而是应该从具体的文件中读取这个
值。这样才能确保程序的兼容性。
0012h Width 1 dword
位图的宽度,以象素为单位
0016h Height 1 dword
位图的高度,以象素为单位
001Ah Planes 1 word
位图的位面数(注:该值将总是 1)
001Ch Bits Per Pixel 1 word
每个象素的位数。