BITMAPFILEHEADER結構的各個域詳細說明如下:
bfType:位圖文件類型,必須是0x424D,即字符串“BM”,也就是說,所有的“*.bmp”文件的頭兩個字節(jié)都是“BM”。 bfSize:位圖文件大小,包括這14個字節(jié)。
bfReserved1, bfReserved2:Windows保留字,暫不用。
bfOffBits:從文件頭到實際的位圖數據的偏移字節(jié)數。
BITMAPINFOHEADER結構的各個域的詳細說明如下:
biSize:本結構的長度,為40個字節(jié)。 biWidth:位圖的寬度,以像素為單位。
biHeight:位圖的高度,以像素為單位。
biPlanes:目標設備的級別,必須是1。
biBitCount:每個像素所占的位數(bit),其值必須為1(黑白圖像)、4(16色圖)、8(256色)、24(真彩色圖),新的BMP格式支持32位色。
biCompresssion:位圖壓縮類型,有效的值為BI_RGB(未經壓縮)、BI_RLE8、BI_RLE4、BI_BITFILEDS(均為Windows定義常量)。這里只討論未經壓縮的情況,即biCompression=BI_RGB。
biSizeImage:實際的位圖數據占用的字節(jié)數,該值的大小在第4部分位圖數據中有具體解釋。
biXPelsPerMeter:指定目標設備的水平分辨率,單位是像素/米。
biYPelsPerMeter:指定目標設備的垂直分辨率,單位是像素/米。
biClrUsed:位圖實際用到的顏色數,如果該值為零,則用到的顏色數為2的biBitCount次冪。
biClrImportant:位圖顯示過程中重要的顏色數,如果該值為零,則認為所有的顏色都是重要的。
RGBQUAD結構的各個域的詳細說明如下:
rgbBlue:該顏色的藍色分量; rgbGreen:該顏色的綠色分量;
rgbRed:該顏色的紅色分量;
rgbReserved:保留字節(jié),暫不用。
第4部分是位圖數據,即圖像數據,其緊跟在位圖文件頭、位圖信息頭和顏色表(如果有顏色表的話)之后,記錄了圖像的每一個像素值。對于有顏色表的位圖,位圖數據就是該像素顏色在調色板中的索引值;對于真彩色圖,位圖數據就是實際的R、G、B值(三個分量的存儲順序是B、G、R)
第一,Windows規(guī)定一個掃描行所占的字節(jié)數必須是4的倍數,不足4的倍數則要對其進行擴充。假設圖像的寬為biWidth個像素、每像素biBitCount個比特,其一個掃描行所占的真實字節(jié)數的計算公式如下:
DataSizePerLine = (biWidth * biBitCount /8+ 3) / 4*4 那么,不壓縮情況下位圖數據的大?。˙ITMAPINFOHEADER結構中的biSizeImage成員)計算如下:
biSizeImage = DataSizePerLine * biHeight 第二,一般來說,BMP文件的數據是從圖像的左下角開始逐行掃描圖像的,即從下到上、從左到右,將圖像的像素值一一記錄下來,因此圖像坐標零點在圖像左下角
|
|
來自: audrey_guowei > 《我的圖書館》