BMP | Version Compare

BMP |

Version Compare

Back to page history

Become a member of the cnBeta 百科 community.
Already 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

Changes

Key:  Additions   Deletions
BMP取自位圖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文件大小 /approx 54+4 /cdot 2^n+/frac{width /cdot height /cdot n}{8}/approx 54+4 /cdot 2^n+/frac{width /cdot height /cdot n}{8},其中高度和寬度都是像素數。 需要注意的是上面公式中的54是位圖文件的文件頭4 /cdot 2^n4 /cdot 2^n是彩色調色板的大小。另外需要注意的是這是一個近似值,對於n位的位圖圖像來說,儘管可能有最多2n中顏色,一個特定的圖像可能並不會使用這些所有的顏色。由於彩色調色板僅僅定義了圖像所用的顏色,所以實際的彩色調色板將小於4 /cdot 2^n4 /cdot 2^n。 如果想知道這些值是如何得到的,請參考下面文件格式的部分。 由於存儲算法本身決定的因素,根據幾個圖像參數的不同計算出的大小與實際的文件大小將會有一些細小的差別。

典型的文件格式

典型的位圖文件格式通常包含下面幾個數據塊: 位圖頭:保存位圖文件的總體信息。 位圖信息:保存位圖圖像的詳細信息。 調色板:保存所用顏色的定義。 位圖數據:保存一個又一個像素的實際圖像。 下面的部分將會詳細地描述位圖文件中保存的數據。需要注意的是這是標準位圖的文件格式,其它一些位圖圖像可能根據生成文件的應用程序不同所使用格式可能會有細微的區別。

位圖頭

這部分是識別信息,典型的應用程序會首先普通讀取這部分數據以確保的確是位圖文件並且沒有損壞。 字節 #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格式表示一位黑白圖像以及.XPMpixelmap)表示彩色圖像。另外還有一種.RAW格式,它除了保存原始數據之外沒有任何其它信息。其它還有Portable Pixmap file format.PPM)和Truevision TGA.TGA),但是它們用得很少或者只用於特殊目的。儘管其它格式也保存爲“位圖”(與矢量圖不同),但是它們使用數據壓縮或者顏色索引,所以它們不是嚴格意義上的位圖。 由於包含有冗餘信息,許多BMP文件使用類似於ZIP這樣的無損數據壓縮算法能夠取得很好的壓縮效果。

 
發佈了12 篇原創文章 · 獲贊 2 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章