位元影像是最常用的windows圖形格式,通過windows API函數可以直接讀取並繪製,不過,有時我們還是需要自己控制,那麼,就讓我們看看他的格式吧!
| 位元影像檔案結構表 |
| 位元影像檔案 |
位元影像檔案頭 |
14 位元組 |
| 位元影像資訊頭 |
40 位元組 |
| 彩色表(調色盤) |
4N 位元組 |
| 位元影像資料 |
x 位元組 |
構件詳解:
- 位元影像檔案頭
位元影像檔案頭包含檔案類型、檔案大小、存放位置等資訊。結構定義如下:
typedef struct tagBITMAPFILEHEADER { UNITbfType; DWORDbfSize; UINTbfReserved1; UINTbfReserved2; DWORDbfOffBits; }BITMAPFILEHEADER; 其中:
bfType 說明檔案類型,在windows系統中為BM。
bfSize 說明檔案大小。
bfReserved1 bfReserved2 保留,設定為0。
bfOffBits 說明實際圖形資料的位移量。
- 位元影像資訊頭
位元影像資訊頭包含位元影像的大小、壓縮類型、和顏色格式,結構定義如下:
typedef struct tagBITMAPINFOHEADER { DWORDbiSize; LONGbiWidth; LONGbiHeight; WORDbiPlanes; WORDbiBitCount; DWORDbiCompression; DWORDbiSizeImage; LONGbiXPelsPerMerer; LONGbiYPelsPerMerer; DWORDbiClrUsed; DWORDbiClrImportant; }BITMAPINFOHEADER; 其中:
biSize 說明BITMAPINFOHEADER結構所需位元組數,在windows系統中為28h
biWidth 說明映像寬度
biHeight 說明映像高度
biPlanes 為目標裝置說明位面數,其值設為1
biBitCount每個像素的位元,單色位元影像為1,256色為8,24bit為24。
biCompression壓縮說明,BI_RGB:無壓縮,BI_RLE8:8位RLE壓縮,BI_RLE4:4位RLE壓縮
biSizeImage說明映像大小,如無壓縮,可設為0
biXPelsPerMeter水平解析度
biYPelsPerMeter垂直解析度
biClrUsed 位元影像使用的顏色數
biImportant重要顏色數目
- 彩色表
彩色表包含的元素與位元影像所具有的顏色數目相同,像素顏色用結構RGBQUAD來表示:
typedef struct tagRGBQUAD{BYTErgbBlue;BYTErgbGreen;BYTErgbRed;BYTErgbReserved;}RGBQUAD; 其中:
rgbBlue 指定藍色強度
rgbGreen 指定綠色強度
rgbRed 指定紅色強度
rgbReserved保留,設為0
- 位元影像資料
緊跟在彩色表後的是映像資料震裂,映像每一掃描行有連續的位元組組成,掃描行由底向上儲存,陣列中第一位元組為左下角像素,最後一位元組為右上方像素。