BMP文件结构

来源:互联网 发布:筹码集中度 知乎 编辑:程序博客网 时间:2024/05/16 15:08

   

  DIB(Device Independent Bitmap)设备无关位图,自带颜色信息,使调色板的管理非常轻松,可以在不同的显示设备上显示。它通常是以BMP的形式被保存在磁盘中或是以资源保存 在EXE或DLL文件中。

  一个BMP文件大体分为以下四个部分。文件信息头,位图信息头,调色板,图像数据信息。

文件信息头是一结构体组成:

Typedef struct tagBITMAPFILEHEADER{

WORD bfType;   文件类型

DWORD bfSize;  文件大小

WORD bfReserved1;  保留字

WORD bfReserved2;

DWORD btOffBits;   从文件头到实际的位图数据的偏移字节数

}BITMAPFILEHEADER

 

位图信息头也是一结构体组成:

Typedef struct tagBITMAPINFOHEADER{

DWORD biSize;   指定这个结构的长度

LONG biWidth;  指定图像的宽度

LONG biHeight;  指定图像的高度

WORD biplanes;  必须是1

WORD bitBitCount; 指定 表示颜色时要用到的位数

DWORD biCompression;  指定位图是否压缩

DWORD biSizeImage; 指定实际的位图数据占用的字节数

LONG biXPelsPerMeter;  指定目标设备的水平分辨率

LONG biYPelsPerMeter;  垂直分辨率

DWORD biClrUsed;     指定本图像实际用到的颜色数

DWORD biClrImprotant;   指定本图像中重要的颜色数

}BITMAPINFOHEADER

 

调色板是由一数组组组成,数组中每个数值是一个tagRGBQUAD结构体,数组的大小等于位图颜色数的多少,即2的bitBitCount次幂。如是真彩图就没有调色板信息,直接就是接下来的图像数据信息。

Typedef struct tagRGBQUAD{

BYTE rgbBlue;           颜色的蓝色分量

BYTE rgbGreen;   绿色分量

BYTE rgbRed;    红色分量

BYTE rgbReserved;  保留值

}RGBQUAD;

 

图像数据信息:如不是真彩图,数据信息就是图像中像素的颜色信息,就是调色板的索引值;如果是真彩图,就直接是实际的R,G,B值。