BMP文件是Windows系统标准图像文件格式,是一种将内存中的图像数据不经过压缩直接按位存盘的文件格式,所以被称为位图(bitmap),文件扩展名为BMP.
BMP文件被分为以下四个部分:位图文件头(Bitmap File Header),位图信息头(Bitmap Info Header),颜色表(Color Map)和位图数据。灰度图像和彩色图像是其中最主要的两种图片表现方式。灰度图像只表达图像的亮度信息而没有颜色信息,图像中每个像素点用一个量化的离散数值表示其灰度级,通常用1个字节存储,可描述出0~255的灰度等级(人眼可分辨的灰度等级也就几十)。8位的灰度图需要颜色板,256个选项的颜色表记录了灰度图的灰度值,灰度图中的位图数据值仅是颜色表的索引。彩色图像包含图像的亮度信息和颜色信息,每个像素使用3个字节,3个字节分别由(RGB)的三基色组成,该类型亦被称为24位真彩色(24位图像不需要颜色表)。
位图文件头(Bitmap File Header)的结构:
typedef struct tagBITMAPFILEHEADER
{
WORD bfType; //位图文件类型,必须是0x424D
DWORD bfSize; //位图文件大小
WORD bfReserved1; //Windows保留字
WORD bfReserved2; //Windows保留字
DWORD bfOffBits; //从文件头到位图数据的偏移字节数
}BITMAPFILEHEADER,FAR *LPBITMAPFILEHEADER, *PBITMAPFILEHEADER;
位图信息头(Bitmap Info Header)的结构:
typedef struct tagBITMAPINFOHEADER
{
DWORD biSize; //该结构的长度,大小为40个字节
LONG biWidth; //位图的宽度,以像素为单位
LONG biHeight; //位图的高度,以像素为单位
WORD biPlanes; //目标设备的级别,必须是1
WORD biBitCount; //每个像素所占的位数
DWORD biCompression;