BMP格式分析

來源:互聯網
上載者:User
BMP檔案格式分析

BMP(Bitmap-File)圖形檔案是Windows採用的 圖形檔案格式,在Windows環境下啟動並執行所有圖象處理軟體都支援BMP圖象檔案格式。Windows系統內部各映像繪製操作都是以BMP為基礎的。 Windows 3.0以前的BMP圖檔案格式與顯示裝置有關,因此把這種BMP圖象檔案格式稱為裝置相關位元影像DDB(device-dependent bitmap)檔案格式。Windows 3.0以後的BMP圖象檔案與顯示裝置無關,因此把這種BMP圖象檔案格式稱為裝置無關位元影像DIB(device-independent bitmap)格式(註:Windows 3.0以後,在系統中仍然存在DDB位元影像,象BitBlt()這種函數就是基於DDB位元影像的,只不過如果你想將映像以BMP格式儲存到磁碟檔案中時,微軟 極力推薦你以DIB格式儲存),目的是為了讓Windows能夠在任何類型的顯示裝置上顯示所儲存的圖象。BMP位元影像檔案預設的副檔名是BMP或者 bmp(有時它也會以.DIB或.RLE作副檔名)。

6.1.2 檔案結構

位元影像檔案可看成由4個部分組成:位元影像檔案頭(bitmap-file header)、位元影像資訊頭(bitmap-information header)、彩色表(color table)和定義位元影像的位元組陣列,它具有如下所示的形式。

位元影像檔案的組成

結構名稱

符號

位元影像檔案頭(bitmap-file header) BITMAPFILEHEADER bmfh
位元影像資訊頭(bitmap-information header) BITMAPINFOHEADER bmih
彩色表(color table) RGBQUAD aColors[]
圖象資料陣列位元組 BYTE aBitmapBits[]

位元影像檔案結構可綜合在表6-01中。

表01 位元影像檔案結構內容摘要

 

位移量

域的名稱

大小

內容

 

 

圖象檔案

0000h 檔案標識 2 bytes 兩位元組的內容用來識別位元影像的類型:

‘BM’ : Windows 3.1x, 95, NT, …

‘BA’ :OS/2 Bitmap Array

‘CI’ :OS/2 Color Icon

‘CP’ :OS/2 Color Pointer

‘IC’ : OS/2 Icon

‘PT’ :OS/2 Pointer

註:因為OS/2系統並沒有被普及開,所以在編程時,你只需判斷第一個標識“BM”就行。

  0002h File Size 1 dword 用位元組表示的整個檔案的大小
  0006h Reserved 1 dword 保留,必須設定為0
  000Ah Bitmap Data Offset 1 dword 從檔案開始到位元影像資料開始之間的資料(bitmap data)之間的位移量
  000Eh Bitmap Header Size 1 dword 位元影像資訊頭(Bitmap Info Header)的長度,用來描述位元影像的顏色、壓縮方法等。下面的長度表示:

28h - Windows 3.1x, 95, NT, …

0Ch - OS/2 1.x

F0h - OS/2 2.x

註:在Windows95、98、2000等作業系統中,位元影像資訊頭的長度並不一定是28h,因為微軟已經制定出了新的BMP檔案格式,其中的資訊頭結構變化比較大,長度加長。所以最好不要直接使用常數28h,而是應該從具體的檔案中讀取這個值。這樣才能確保程式的相容性。

  0012h Width 1 dword 位元影像的寬度,以象素為單位
  0016h Height 1 dword 位元影像的高度,以象素為單位
  001Ah Planes 1 word 位元影像的位面數(註:該值將總是1)
圖象

資訊

 

 

001Ch Bits Per Pixel 1 word 每個象素的位元

1 - 單色位元影像(實際上可有兩種顏色,預設情況下是黑色和白色。你可以自己定義這兩種顏色)

4 - 16 色位元影像

8 - 256 色位元影像

16 - 16bit 高彩色位元影像

24 - 24bit 真彩色位元影像

32 - 32bit 增強型真彩色位元影像

  001Eh Compression 1 dword 壓縮說明:

0 - 不壓縮 (使用BI_RGB表示)

1 - RLE 8-使用8位RLE壓縮方式(用BI_RLE8表示)

2 - RLE 4-使用4位RLE壓縮方式(用BI_RLE4表示)

3 - Bitfields-位域存放方式(用BI_BITFIELDS表示)

  0022h Bitmap Data Size 1 dword 用位元組數表示的位元影像資料的大小。該數必須是4的倍數
  0026h HResolution 1 dword 用象素/米表示的水平解析度
  002Ah VResolution 1 dword 用象素/米表示的垂直解析度
  002Eh Colors 1 dword 位元影像使用的顏色數。如8-位元/象素表示為100h或者 256.
  0032h Important Colors 1 dword 指定重要的顏色數。當該域的值等於顏色數時(或者等於0時),表示所有顏色都一樣重要
調色盤資料 根據BMP版本的不同而不同 Palette N * 4 byte 調色盤規範。對於調色盤中的每個表項,這4個位元組用下述方法來描述RGB的值:





1位元組用於藍色分量
1位元組用於綠色分量
1位元組用於紅色分量
1位元組用於填充符(設定為0)
圖象資料 根據BMP版本及調色盤尺寸的不同而不同 Bitmap Data xxx bytes 該域的大小取決於壓縮方法及映像的尺寸和映像的位元深度,它包含所有的位元影像資料位元組,這些資料可能是彩色調色盤的索引號,也可能是實際的RGB值,這將根據映像資訊頭中的位元深度值來決定。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.