介绍完位图和调色板的概念,下面就让我们来看一看 Windows的位图文件(bmp文件)的格 式是什么样子的 bmp文件大体上分成四个部分,如图1.3所示 位图文件头 BITMAPFILEHEADER 位图信息头 BITMAPINFOHEADER 调色板 Palette 实际的位图数据 Image Date 图1.3 Windows位图文件结构示意图 第一部分为位图文件头 BITMAPFILEHEADER,是一个结构,其定义如下: typedef struct tag BITMAPFILEHEADER i WORD DWORD bfSize WORD bfreservedl WORD bfReserved2 DWORD bfoffBits A BITMAPFILEHEADER; 这个结构的长度是固定的,为14个字节(WORD为无符号16位整数, DWORD为无符号32 位整数,各个域的说明如下 rtYpe 指定文件类型,必须是0x424D,即字符串“BM”,也就是说所有bmp文件的头两个字节 都是“BM” baIze 指定文件大小,包括这14个字节 bfReservedl, bfReserved2 为保留字,不用考虑 为从文件头到实际的位图数据的偏移字节数,即图1.3中前三个部分的长度之和 第二部分为位图信息头 BITMAPINFOHEADER,也是一个结构,其定义如下 typedef struct tag BITMAPINFOHEADER! dword biSize LONG bitwidth LONG biWeight; WORD biPlar WORD biBitcount DWORD coMpression dword biSizelmage LONG biXPelsPerMeter. LONG biY PelsPerMeter介绍完位图和调色板的概念,下面就让我们来看一看 Windows 的位图文件(.bmp 文件)的格 式是什么样子的。 bmp 文件大体上分成四个部分,如图 1.3 所示。 位图文件头 BITMAPFILEHEADER 位图信息头 BITMAPINFOHEADER 调色板 Palette 实际的位图数据 ImageDate 图 1.3 Windows 位图文件结构示意图 第一部分为位图文件头 BITMAPFILEHEADER,是一个结构,其定义如下: typedef struct tagBITMAPFILEHEADER { WORD bfType; DWORD bfSize; WORD bfReserved1; WORD bfReserved2; DWORD bfOffBits; } BITMAPFILEHEADER; 这个结构的长度是固定的,为 14 个字节(WORD 为无符号 16 位整数,DWORD 为无符号 32 位整数),各个域的说明如下: bfType 指定文件类型,必须是 0x424D,即字符串“BM”,也就是说所有.bmp 文件的头两个字节 都是“BM”。 bfSize 指定文件大小,包括这 14 个字节。 bfReserved1,bfReserved2 为保留字,不用考虑 bfOffBits 为从文件头到实际的位图数据的偏移字节数,即图 1.3 中前三个部分的长度之和。 第二部分为位图信息头 BITMAPINFOHEADER,也是一个结构,其定义如下: typedef struct tagBITMAPINFOHEADER{ DWORD biSize; LONG biWidth; LONG biHeight; WORD biPlanes; WORD biBitCount DWORD biCompression; DWORD biSizeImage; LONG biXPelsPerMeter; LONG biYPelsPerMeter;