Become a member of the cnBeta 百科 community.
|
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
//
存儲算法
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 保存所用重要顏色數目。當每個顏色都重要時這個值與顏色數目相等。