符号 32 位整数),各个域的说明如下:
bfType:指定文件类型,必须是 0x424D,即字符串“BM”,也就是说所有“.bmp”
文件的头两个字节都是“BM”。
bfSize:指定文件大小,包括这 14 个字。
bfReserved1,bfReserved2:为保留字,不用考虑。
bfOffBits:为从文件头到实际的位图数据的偏移字节数,即上图中前三个部分的
和。
第二部分为位图信息头 BITMAPINFOHEADER,它也是一个结构,其定义如下:
typedef struct tagBITMAPINFOHEADER{
DWORD biSize;
LONG biWidth;
LONG biHeight;
WORD biPlanes;
WORD biBitCount;
DWORD biCompression;
DWORD biSizeImage;
LONG biXPelsPerMeter;
LONG biYPelsPerMeter;
DWORD biClrUsed;
DWORD biClrImportant;
}BITMAPINFOHEADER , FAR
*LPBITMAPINFOHEADER,*PBITMAPINFOHEADER;
该结构的长度也是固定的,为 40 个字节。各个域的说明如下:
biSize:指定这个结构的长度,为 40 字节。
biWidth:指定图像的宽度,单位是像素。
biHeight:指定图像的高度,单位是像素。
biPlanes:必须是 1,不用考虑。
biBitCount :指定 表示颜色时要用到的位数,常用的值为 1(黑白二色图)、
4(16 色图)、8(256 色)、24(真彩色),新的“.bmp”格式支持 32 位色,这
里就不做讨论了。
biCompression : 指 定 位 图 是 否 压 缩 , 有 效 的 值 为 BI-RGB , BI-RLE8 , BI-
RLE4,BI-BITFIELDS(都是 Windows 定义好的常量)。要说明的是,Windows
位图可以采用 RLE4 和 RLE8 的压缩格式,但用的不多。今后所讨论的只有第一
种不压缩的情况,即 biCompression 为 BI-RGB 的情况。
biSizeImage:指定实际的位图数据占用的字节数。
biXPelsPerMeter:指定目标设备的水平分辨率,单位是像素/米。
biYPelsPerMeter:指定目标设备的垂直分辨率,单位是像素/米。
biClrUsed:指定本图像实际用到的颜色数,如果该项为 0,则用到的颜色数为 2
的 biCompression 次幂。
biClrImportant:指定本图像中重要的颜色数,如果该值为 0,则认为所有的颜色
都是重要的。
第三部分为调色板(Palette)。有些位图需要调色板,有些位图,如真彩色图,不
需要调色板,它们的 BITMAPINFOHEADER 后面直接是位图数据。
调色板 实 际 上是一个 数 组 ,共有 biClrUsed 个 元 素(如 果 该 值 为 0 ,则有 2 的
- 5 -