Bitmap由四個部分組成,分別爲:
1.位圖文件頭:
結構體如下:
typedef struct tagBITMAPFILEHEADER {
WORD bfType; //文件類型("BM")
DWORD bfSize; //文件大小
WORD bfReserved1; //保留字段0
WORD bfReserved2; //保留字段0
DWORD bfOffBits; //圖像文件到文件頭起始的偏移量
} BITMAPFILEHEADER, FAR *LPBITMAPFILEHEADER, *PBITMAPFILEHEADER;
2.位圖信息頭:
結構體如下:
typedef struct tagBITMAPINFOHEADER {
DWORD biSize; //本結構體佔用大小
LONG biWidth; //圖像寬度(單位:像素)
LONG biHeight; //圖像高度(單位:像素)
WORD biPlanes; //設備上圖像平面數,必須爲1
WORD biBitCount; //存儲每個像素需要的二進制位數(1:單色;4:16色;8:256色;16:64K色(高彩色);24:16M色(真彩色);32:4096M色(增強型真彩色))
DWORD biCompression; //是否壓縮存儲圖像數據
DWORD biSizeImage; //指定圖像大小(單位:字節)
LONG biXPelsPerMeter; //水平方向分辨率
LONG biYPelsPerMeter; //豎直方向分辨率
DWORD biClrUsed; //實際圖像使用顏色表中的顏色數
DWORD biClrImportant; //重要的顏色數(0表示所有都重要)
} BITMAPINFOHEADER, FAR *LPBITMAPINFOHEADER, *PBITMAPINFOHEADER;
3.調色板:
結構體如下:
typedef struct tagRGBQUAD {
BYTE rgbBlue; //藍色分量
BYTE rgbGreen; //綠色分量
BYTE rgbRed; //紅色分量
BYTE rgbReserved; //保留值
} RGBQUAD;
4.位圖數據:
實際位圖數據是一片連續的存儲區域,其中保存着圖像中每個像素的灰度(顏色)信息。
(1)256色灰度圖像:圖像數據就是該像素的實際灰度,1個像素需要1個字節來表示。
(2)索引圖像:圖像數據就是該像素顏色在調色板中的索引值。
(3)真彩色圖:圖像數據就是實際的RGB值,1個像素需要3個字節來表示。