bmp文件包含了一个DIB(Device Indepentdent Bitmap)设备无关图。
一个BMP文件大体上分成如下4个部分
1,位图文件头BITMAPFILEHEADER,结构定义如下:
typedef struct tagBITMAPFILEHEADER{
WORD bfType;
DWORD bfSize;
WORD bfReserved1;
WORD bfReserved2;
WORD bfOffBits;
}BITMAPFILEHEADER,FAR *LPBITMAPFILEHEADER,*PBITMAPFILEHEADER;
该长度是固定的,为14字节
2,位图信息头BITMAPINFOHEADER,结构定义如下:
typedef struct tagBITMAPINFOHEADER{
DWORD biSize;
LONG biWidth;
LONG biHeight;
WORD biPlanes;
DWORD biBitCount;
DWORD biCompression;
DWORD biSizeImage;
LONG biXPelsPerMeter;
LONG biYPelsPerMeter;
DWORD biClrUsed;
DWORD biClrImportant;
}BITMAPINFOHEADER,FAR* LPBITMAPINFOHEADER, *PBITMAPINFOHEADER;
改结构长度固定,为40个字节
3,为调色板,实际上是一个数组,共有biClrUsed个元素,每个元素占4个字节,定义如下:
typedef struct tagRGBQUAD{
BYTE rgbBlue;
BYTE rgbGreen;
BYTE rgbRed;
BYTE rgbReserved;
}RGBQUAD;
4,为实际的图像数据。
2色位图 1个字节表示8个象素
16色位图 1个字节表示2个象素
256色位图 1个字节表示1个象素
真彩色位图 3个字节表示1个象素
一个BMP文件大体上分成如下4个部分
1,位图文件头BITMAPFILEHEADER,结构定义如下:
typedef struct tagBITMAPFILEHEADER{
WORD bfType;
DWORD bfSize;
WORD bfReserved1;
WORD bfReserved2;
WORD bfOffBits;
}BITMAPFILEHEADER,FAR *LPBITMAPFILEHEADER,*PBITMAPFILEHEADER;
该长度是固定的,为14字节
2,位图信息头BITMAPINFOHEADER,结构定义如下:
typedef struct tagBITMAPINFOHEADER{
DWORD biSize;
LONG biWidth;
LONG biHeight;
WORD biPlanes;
DWORD biBitCount;
DWORD biCompression;
DWORD biSizeImage;
LONG biXPelsPerMeter;
LONG biYPelsPerMeter;
DWORD biClrUsed;
DWORD biClrImportant;
}BITMAPINFOHEADER,FAR* LPBITMAPINFOHEADER, *PBITMAPINFOHEADER;
改结构长度固定,为40个字节
3,为调色板,实际上是一个数组,共有biClrUsed个元素,每个元素占4个字节,定义如下:
typedef struct tagRGBQUAD{
BYTE rgbBlue;
BYTE rgbGreen;
BYTE rgbRed;
BYTE rgbReserved;
}RGBQUAD;
4,为实际的图像数据。
2色位图 1个字节表示8个象素
16色位图 1个字节表示2个象素
256色位图 1个字节表示1个象素
真彩色位图 3个字节表示1个象素