BMP图片结构
- bmp文件组成
- bmp文件头
- 位图信息头
- 颜色表
- 位图数据
1.bmp文件组成
(1)位图文件头结构(BITMAPFILEHEADER)
(2)位图信息头结构(BITMAPINFOHEADER)
(3)位图颜色表(RGBQUAD)
(4)位图像素数据
LONG = DWORD = 2 WORD = 2 BYTE
在c/c++编程中,wingdi.h头文件中有这些结构不用自己写,windows.h包含此头文件。
2. bmp文件头
文件的标识符,和整个文件的大小。里面没有对自身图像信息的描绘,只是标识了图像信息开始的位置。
typedef struct tagBITMAPFILEHEADER {
WORD bfType; //"BM"
DWORD bfSize; //文件大小
WORD bfReserved1; //0
WORD bfReserved2; //0
DWORD bfOffBits; //位图像素数据起始位置
}BITMAPFILEHEADER;
3. 位图信息头
对图像信息结构描绘。
typedef struct tagBITMAPINFOHEADER{
DWORD biSize; //本结构体大小
LONG biWidth; //宽(以像素为单位)
LONG biHeight; //高(同上)
WORD biPlanes; //位平面数(一般标准为1)
WORD biBitCount; //每个像素所需位数
DWORD biCompression;//图像压缩类型(0表示不压缩)
DWORD biImageSize; //位图大小
LONG biXPelsPerMeter;//水平分辨率0
LONG biYPelsPerMeter;//垂直分辨率0
DWORD biClrUsed; //颜色数(若为标准颜色16、256等,值为0)
DWORD biClrImportant;//重要的颜色数(一般为0)
}BITMAPINFOHEADER;
4. 颜色表
typedef struct tagRGBQUAD{
BYTE rgbBlue; //蓝色
BYTE rgbGreen; //绿色
BYTE rgbRed; //红色
BYTE rgbReserved; //保留字0
}RGBQUAD;
5. 位图数据
typedef struct tagBITMAPINFO{
BITMAPINFOHEADER bmiHeader;
RGBQUAD bmiColors[1];//颜色表
}BITMAPINFO;