BMP格式文件相關內容


BMP

BMP是一種與硬件設備無關的圖像文件格式,使用很是廣。它採用位映射存儲格式,除了圖像深度可選之外,不採用其餘任何壓縮,所以,BMP文件所佔用的空間很大。BMP文件的圖像深度可選lbit、4bit、8bit及24bit。BMP文件存儲數據時,圖像的掃描方式是按從左到右、從下到上的順序。



因爲BMP文件格式是Windows環境中交換與圖有關的數據的一種標準,所以在Windows環境中運行的圖形圖像軟件都支持BMP圖像格式。



典型的BMP圖像文件由三部分組成:位圖文件頭數據結構,它包含BMP圖像文件的類型、顯示內容等信息;位圖信息數據結構,它包含有BMP圖像的寬、高、壓縮方法,以及定義顏色等信息。



具體數據舉例:

如某BMP文件開頭:

424D 4690 0000 0000 0000 4600 0000 2800 0000 8000 0000 9000 0000 0100*1000 0300 0000 0090 0000 A00F 0000 A00F 0000 0000 0000 0000 0000*00F8 0000 E007 0000 1F00 0000 0000 0000*02F1 84F1 04F1 84F1 84F1 06F2 84F1 06F2 04F2 86F2 06F2 86F2 86F2 .... ....



BMP文件可分爲四個部分:位圖文件頭、位圖信息頭、彩色板、圖像數據陣列,在上圖中已用*分隔。



1、圖像文件頭

1)1:(這裏的數字表明的是"字",即兩個字節,下同)圖像文件頭。424Dh=’BM’,表示是Windows支持的BMP格式。

2)2-3:整個文件大小。4690 0000,爲00009046h=36934。

3)4-5:保留,必須設置爲0。

4)6-7:從文件開始到位圖數據之間的偏移量。4600 0000,爲00000046h=70,上面的文件頭就是35字=70字節。

5)8-9:位圖圖信息頭長度。

6)10-11:位圖寬度,以像素爲單位。8000 0000,爲00000080h=128。

7)12-13:位圖高度,以像素爲單位。9000 0000,爲00000090h=144。

8)14:位圖的位面數,該值老是1。0100,爲0001h=1。



2、位圖信息頭

9)15:每一個像素的位數。有1(單色),4(16色),8(256色),16(64K色,高彩色),24(16M色,真彩色),32(4096M色,加強型真彩色)。1000爲0010h=16。

10)16-17:壓縮說明:有0(不壓縮),1(RLE 8,8位RLE壓縮),2(RLE 4,4位RLE壓縮,3(Bitfields,位域存放)。RLE簡單地說是採用像素數+像素值的方式進行壓縮。T408採用的是位域存放方式,用兩個字節表示一個像素,位域分配爲r5b6g5。圖中0300 0000爲00000003h=3。

11)18-19:用字節數表示的位圖數據的大小,該數必須是4的倍數,數值上等於位圖寬度×位圖高度×每一個像素位數。0090 0000爲00009000h=80×90×2h=36864。

12)20-21:用象素/米表示的水平分辨率。A00F 0000爲0000 0FA0h=4000。

13)22-23:用象素/米表示的垂直分辨率。A00F 0000爲0000 0FA0h=4000。

14)24-25:位圖使用的顏色索引數。設爲0的話,則說明使用全部調色板項。

15)26-27:對圖象顯示有重要影響的顏色索引的數目。若是是0,表示都重要。



3、彩色板

16)28-35:彩色板規範。對於調色板中的每一個表項,用下述方法來描述RGB的值:

1字節用於藍色份量

1字節用於綠色份量

1字節用於紅色份量

1字節用於填充符(設置爲0)

對於24-位真彩色圖像就不使用彩色板,由於位圖中的RGB值就表明了每一個象素的顏色。

如,彩色板爲00F8 0000 E007 0000 1F00 0000 0000 0000,其中:

00FB 0000爲FB00h=1111100000000000(二進制),是紅色份量的掩碼。

E007 0000爲 07E0h=0000011111100000(二進制),是綠色份量的掩碼。

1F00 0000爲001Fh=0000000000011111(二進制),是紅色份量的掩碼。

0000 0000總設置爲0。

將掩碼跟像素值進行「與」運算再進行移位操做就能夠獲得各色份量值。看看掩碼,就能夠明白事實上在每一個像素值的兩個字節16位中,按從高到低取五、六、5位分別就是r、g、b份量值。取出份量值後把r、g、b值分別乘以八、四、8就能夠補齊第個份量爲一個字節,再把這三個字節按rgb組合,放入存儲器(一樣要反序),就能夠轉換爲24位標準BMP格式了。



4、圖像數據陣列

17)17-...:每兩個字節表示一個像素。陣列中的第一個字節表示位圖左下角的象素,而最後一個字節表示位圖右上角的象素。



5、存儲算法

BMP文件一般是不壓縮的,因此它們一般比同一幅圖像的壓縮圖像文件格式要大不少。例如,一個800×600的24位幾乎佔據1.4MB空間。所以它們一般不適合在因特網或者其它低速或者有容量限制的媒介上進行傳輸。 根據顏色深度的不一樣,圖像上的一個像素能夠用一個或者多個字 搜索節表示,它由n/8所肯定(n是位深度,1字節包含8個數據位)。圖片瀏覽器等基於字節的ASCII值計算像素的顏色,而後從調色板中讀出相應的值。更爲詳細的信息請參閱下面關於位圖文件的部分。 n位2n種顏色的位圖近似字節數能夠用下面的公式計算: BMP文件大小約等於 54+4*2的n次方+(w*h*n)/8 ,其中高度和寬度都是像素數。 須要注意的是上面公式中的54是位圖文件的文件頭,是彩色調色板的大小。另外須要注意的是這是一個近似值,對於n位的位圖圖像來講,儘管可能有最多2n中顏色,一個特定的圖像可能並不會使用這些全部的顏色。因爲彩色調色板僅僅定義了圖像所用的顏色,因此實際的彩色調色板將小於。 若是想知道這些值是如何獲得的,請參考下面文件格式的部分。 因爲存儲算法自己決定的因素,根據幾個圖像參數的不一樣計算出的大小與實際的文件大小將會有一些細小的差異。
相關文章
相關標籤/搜索