一、bitmap文件简述
bitmap文件,即我们所说的bmp位图文件,它是Windows操作系统中标准的图像文件格式。分为设备相关位图DDB和设备无关位图DIB,不过现在大都采用DIB而DDB则是微软为了兼容Windows3.0而留下的历史遗留产品。BMP文件没有采用任何压缩,因此一般都很大。一般一个BMP文件分为四个部分BMP文件头,BMP位图信息头,BMP颜色表,以及位图数据。
在讨论BMP数据结构之前先定义几个将要用到的类型:
typedef unsigned long DWORD;
typedef int BOOL;
typedef unsigned char BYTE;
typedef unsigned short WORD;
typedef float FLOAT;
typedef unsigned char byte;
BMP文件头的数据结构如下:
//BMP文件头
typedef struct tagBITMAPFILEHEADER
{
WORD bfType;//位图文件的类型,必须为BM(1-2字节)
DWORD bfSize;//位图文件的大小,以字节为单位(3-6字节,低位在前)
WORD bfReserved1;//位图文件保留字,必须为0(7-8字节)
WORD bfReserved2;//位图文件保留字,必须为0(9-10字节)
DWORD bfOffBits;//位图数据的起始位置,以相对于位图(11-14字节,低位在前)文件头的偏移量表示,以字节为单位
}BitmapFileHeader;
BMP位图信息头数据结构如下:
//位图信息头
typedef struct tagBITMAPINFOHEADER
{
DWORD biSize;//本结构所占用字节数(15-18字节)
long biWidth;//位图的宽度,以像素为单位(19-22字节)
long biHeight;//位图的高度,以像素为单位(23-26字节)
WORD biPlanes;//目标设备的级别,必须为1(27-28字节)
WORD biBitCount;