BMP之一 bmp格式解析 很容易理解

2021-06-19 08:05:15 字數 2226 閱讀 3927

位**件(bitmap-file,bmp)格式是windows採用的影象檔案儲存格式,在windows環境下執行的所有影象處理軟體都支援這種格 式。windows 3.0以前的bmp位**件格式與顯示裝置有關,因此把它稱為裝置相關位圖(device-dependent bitmap,ddb)檔案格式。windows 3.0以後的bmp位**件格式與顯示裝置無關,因此把這種bmp位**件格式稱為裝置無關位圖(device-independent bitmap,dib)格式,目的是為了讓windows能夠在任何型別的顯示裝置上顯示bmp位**件。

位**件可看成由4個部分組成:位**件頭(bitmap-file header)、位圖資訊頭(bitmap-information header)、彩色表(color table)和定義點陣圖的位元組陣列。可以文字開啟方式開啟bmp檔案。

(1)檔案頭資訊塊

0000-0001:檔案標識,為字母ascii碼「bm」,42 4d。亦或者與19778相比較。

0002-0005:整個檔案大小,單位位元組。

0006-0009:保留,每位元組以「00」填寫。

000a-000d:記錄像象資料區的起始位置。從檔案開始到位圖資料(bitmap data)之間的偏移量。

(2)影象描述資訊塊

000e-0011:影象描述資訊塊的大小,常為28h。

0012-0015:影象寬度。以畫素為單位。

0016-0019:影象高度。以畫素為單位。

001a-001b:影象的plane總數(恒為1)。

001c- 001d:記錄畫素的位數,很重要的數值,影象的顏色數由該值決定。1 - monochrome bitmap,4 - 16 color bitmap,8 - 256 color bitmap,f - 16位位圖,18 - 24bit (true color) bitmap,20 - 32位位圖。

001e-0021:資料壓縮方式(數值位0:不壓縮;1:8位壓縮;2:4位壓縮;3:bitfields壓縮)。

0022-0025:影象區資料的大小。單位位元組,該數必須是4的倍數。

0026-0029:水平每公尺有多少畫素,在裝置無關位圖(.dib)中,每位元組以00h填寫。

002a-002d:垂直每公尺有多少畫素,在裝置無關位圖(.dib)中,每位元組以00h填寫。

002e-0031:此影象所用的顏色數。

0032-0035:指定重要的顏色數。當該域的值等於顏色數時(或者等於0時),表示所有顏色都一樣重要。

(3)顏色表(調色盤)

顏色表的大小根據所使用的顏色模式而定,其中每4位元組表示一種顏色,並以b(藍色)、g(綠色)、r(紅色)、alpha(32位位圖 的透明度值,一般不需要)。對於24-位真彩色圖象就不使用彩色表(同樣也包括16位、和32位位圖),因為點陣圖中的rgb值就代表了每個象素的顏色;而 對於使用索引顏色的,則需要較大的調色盤。

(4)影象資料區

顏色表接下來為位**件的影象資料區,在此部分記錄著每點畫素對應的顏色索引號,其記錄方式也隨顏色模式而定,既2色影象每點佔1位(8位為1字 節);16色影象每點佔4位(半位元組);256色影象每點佔8位(1位元組);真彩色影象每點佔24位(3位元組)。所以,整個資料區的大小也會隨之變化。究 其規律而言,可的出如下計算公式:影象資料資訊大小=(影象寬度*影象高度*記錄畫素的位數)/8。掃瞄行是由底向上儲存的,這就是說,陣列中的第乙個字 節表示位圖左下角的畫素,而最後乙個位元組表示位圖右上角的畫素。

然而,未壓縮的影象資訊區的大小。除了真彩色模式外,其餘的均大於或等於資料資訊的大小。這是為什麼呢?原因有兩個:

bmp 檔案記錄一行影象是以位元組為單位的。因此,就不存在乙個位元組中的資料位資訊表示的點在不同的兩行中。也就是說,設顯示模式位16色,在每個位元組分配兩個點 資訊時,如果影象的寬度為奇數,那麼最後乙個畫素點的資訊將獨佔乙個位元組,這個位元組的後4位將沒有意義。接下來的乙個位元組將開始記錄下一行的資訊。 

(5)例項分析

如下的4x4畫素的點陣圖

我們可以通過查詢對應的資料位來驗證上面所分析的各部分資訊。這樣就比較清楚了。

(6)位圖操作常使用的結構體 

位圖標頭檔案結構:

typedef struct tagbitmapfileheaderbitmapfileheader, *pbitmapfileheader;

位圖資訊結構:

typedef struct tagbitmapinfoheaderbitmapinfoheader,*pbitmapinfoheader;

參考原文:

參考原文:

0 給主人留下些什麼吧!~~

bmp格式解析

寫這 時,出現的錯誤 1.忘了on wm paint 一直在介面上畫不出來 找了好久 2.正確寫法 byte pbits byte lpbase pbitmapfileheader bfoffbits 寫成了byte pbits pbitmapfileheader bfoffbits cpp inc...

Bmp檔案格式解析

1.bmp檔案組成。bmp檔案由檔案頭 位圖資訊頭 顏色資訊和圖形資料四部分組成。檔案頭主要包含檔案的大小 檔案型別 影象資料偏離檔案頭的長度等資訊 位圖資訊頭包含圖象的尺寸資訊 影象用幾個位元數值來表示乙個畫素 影象是否壓縮 影象所用的顏色數等資訊。顏色資訊包含影象所用到的顏色表,顯示影象時需用到...

Bmp格式與程式設計讀取解析

影象載入函式,通過bmp路徑,載入影象資料,通過類建構函式來實現。digitalimage digitalimage lpctstr lpszpath 為位 件頭分配空間,並初始化為0 m lpbmpfileheader lpbitmapfileheader new byte sizeof bitm...