| BMP | Version CompareBack to page history |
Become a member of the cnBeta 百科 community. Join This WikiAlready a member? Sign in |
| Version |
User |
Scope of changes |
| Jun 28, 1:01 PM EDT (current) |
Anonymous |
2 words added, 13 words deleted, 3 images added, 3 images deleted |
| Jul 2, 9:18 AM EDT |
vulcano |
251 words added, 3 images added |
ChangesKey: Additions DeletionsBMP取自位元影像BitMaP的縮寫,也稱為DIB(與BMP取自位元影像BitMaP的縮寫,也稱為DIB(與裝置無關的位元影像)是無關的位元影像)是微軟視窗圖形子系統(GDI)內部使用的一種位元影像格式,它是微軟視窗平台上的一個簡單的圖形檔案格式。 映像通常儲存的色彩深度有2(1位)、16(4位)、256(8位)、65536(16位)和1670萬(24位)種顏色(其中位是表示每點所用的資料位元)。8位元影像像可以是索引彩色映像外,也可以是灰階映像。表示透明的alpha通道也可以儲存在一個類似於灰階映像的獨立檔案中。帶有整合的alpha通道的32位版本已經隨著視窗XP出現,它在視窗的登入和主題系統中都有使用,但是還沒有多少影像編輯軟體支援。
//
[編輯]
儲存演算法
BMP檔案通常是不壓縮的,所以它們通常比同一幅映像的壓縮影像檔格式要大很多。例如,一個800×600的24位幾乎佔據1.4MB空間。因此它們通常不適合在網際網路或者其它低速或者有容量限制的媒介上進行傳輸。 根據色彩深度的不同,映像上的一個像素可以用一個或者多個位元組表示,它由n/8所確定(n是位元深度,1位元組包含8個資料位元)。圖片瀏覽器等基於位元組的ASCII值計算像素的顏色,然後從調色盤中讀出相應的值。更為詳細的資訊請參閱下面關於位元影像檔案的部分。 n位2n種顏色的位元影像近似位元組數可以用下面的公式計算: BMP檔案大小 ,其中高度和寬度都是像素數。 需要注意的是上面公式中的54是位元影像檔案的檔案頭,是彩色調色盤的大小。另外需要注意的是這是一個近似值,對於n位的位元影像映像來說,儘管可能有最多2n中顏色,一個特定的映像可能並不會使用這些所有的顏色。由於彩色調色盤僅僅定義了映像所用的顏色,所以實際的彩色調色盤將小於。 如果想知道這些值是如何得到的,請參考下面檔案格式的部分。 由於儲存演算法本身決定的因素,根據幾個映像參數的不同計算出的大小與實際的檔案大小將會有一些細小的差別。
[編輯]
典型的檔案格式
典型的位元影像檔案格式通常包含下面幾個資料區塊:
- 位元影像頭:儲存位元影像檔案的總體資訊。
- 位元影像資訊:儲存位元影像映像的詳細資料。
- 調色盤:儲存所用顏色的定義。
- 位元影像資料:儲存一個又一個像素的實際映像。
下面的部分將會詳細地描述位元影像檔案中儲存的資料。需要注意的是這是標準位元影像的檔案格式,其它一些位元影像映像可能根據組建檔案的應用程式不同所使用格式可能會有細微的區別。
[編輯]
位元影像頭
這部分是識別資訊,典型的應用程式會首先普通讀取這部分資料以確保的確是位元影像檔案並且沒有損壞。
- 位元組 #1-2 儲存位元影像檔案的標識符,這兩個位元組的典型資料是BM。
- 位元組 #3-6 使用一個dword儲存位元影像檔案大小。
- 位元組 #7-10 是保留步部分,實際的值根據產生它們的應用程式不同而不同。
- 位元組 #11-14 儲存位元影像資料位元置的地址位移,也就是起始地址。
[編輯]
位元影像資訊
這部分告訴應用程式映像的詳細資料,在螢幕上顯示映像將會使用這些資訊,它從檔案的第15個位元組開始。
- 位元組 #15-18 定義頭的大小。它的值是:40 - Windows V3、12 - OS/2 V1、64 - OS/2 V2、108 - Windows V4、124 - Windows V5
- 位元組 #19-22 儲存位元影像寬度(以像素個數表示)。
- 位元組 #23-26 儲存位元影像高度(以像素個數表示)。
- 位元組 #27-28 儲存所用彩色位面的個數。不經常使用。
- 位元組 #29-30 儲存每個像素的位元,它是映像的色彩深度。常用值是1、4、8和24。
- 位元組 #31-34 定義所用的壓縮演算法。允許的值是0、1、2、3、4、5。
0 - 沒有壓縮(也用BI_RGB表示)
1 - 行程長度編碼 8位/像素(也用BI_RLE8表示)
2 - 行程長度編碼4位/像素(也用BI_RLE4表示)
3 - Bit field(也用BI_BITFIELDS表示)
4 - JPEG映像(也用BI_JPEG表示)
5 - PNG映像(也用BI_PNG表示)
然而,由於大多數位元影像檔案都是不壓縮的,所以最常用的值是0。
- 位元組 #35-38 儲存映像大小。這是原始(:en:raw)位元影像資料的大小,不要與檔案大小混淆。
- 位元組 #39-42 儲存映像水平方向解析度。
- 位元組 #43-46 儲存映像豎值方向解析度。
- 位元組 #47-50 儲存所用顏色數目。
- 位元組 #51-54 儲存所用重要顏色數目。當每個顏色都重要時這個值與顏色數目相等。
[編輯]
調色盤
這部分定義了映像中所用的顏色。如上所述,位元影像映像一個像素接著一個像素儲存,每個像素使用一個或者多個位元組的值表示,所以調色盤的目的就是要告訴應用程式這些值所對應的實際顏色。 典型的位元影像檔案使用RGB彩色模型。在這種模型中,每種顏色都是由不同強度(從0到最大強度)的紅色(R)、綠色(G)和藍色(B)組成的,也就是說,每種顏色都可以使用紅色、綠色和藍色的值所定義。 在位元影像檔案的實現中,調色盤可以包含很多條目,條目個數就是映像中所使用的顏色的個數。每個條目包含4個位元組:其中三個表示紅色、綠色和藍色,第四 個位元組沒有使用(大多數應用程式將它設為0)。對於每個位元組,數值0表示相應的顏色在當前的影像檔中沒有使用,而數值255表示那個顏色使用最大的強 度。
[編輯]
位元影像資料
這部分逐個像素表示映像。像素是從下到上、從左至右儲存的。每個像素使用一個或者多個位元組表示。如果一個映像水平線的位元組數不是4的倍數,這行就使用空位元組補齊,通常是ASCII碼0。
[編輯]
其它
儘管檔案大小比較大,但是位元影像檔案的簡單性、在微軟視窗和其它地方的廣泛使用以及這種格式的優秀文檔標準以及沒有專利約束,使得它成為其它作業系統影像處理程式能夠讀寫的一種最為常用的格式。 X Window System使用類似的.XBM格式表示一位黑白映像以及.XPM(pixelmap)表示彩色映像。另外還有一種.RAW格式,它除了儲存未經處理資料之外沒有任何其它資訊。其它還有Portable Pixmap file format (.PPM)和Truevision TGA(.TGA),但是它們用得很少或者只用於特殊目的。儘管其它格式也儲存為“位元影像”(與向量圖不同),但是它們使用資料壓縮或者色彩索引,所以它們不是嚴格意義上的位元影像。 由於包含有冗餘資訊,許多BMP檔案使用類似於ZIP這樣的無損資料壓縮演算法能夠取得很好的壓縮效果。