bmp(bitmap-file)影象檔案,又叫位**件,是windows採用的圖形檔案格式,在windows環境下執行的所有影象處理軟體都支援bmp影象檔案格式。windows系統內部個影象繪製操作以bmp為基礎的。乙個bmp檔案由四個部分組成。
乙個bmp檔案,可以用**表示,如下:
typedef structtagbitmap_file
bitmap_file;
bmp檔案頭:bitmapfileheader
typedef structtagbitmapfileheader
bftype
說明檔案的型別,該值必須是0x4d42,也就是字元『bm』,否則表示根本不是bmp
bfsize
說明位**件的大小,用位元組為單位
bfreserved1
保留,必須設定為0
bfreserved2
保留,必須設定為0
bfoffbits
說明從檔案頭開始到實際的影象資料之間的位元組的偏移量。因為位圖資訊頭和調色盤的長度會根據不同情況而變化,所以需要用這個偏移值迅速的從檔案中讀取到為資料
位圖資訊段:bitmapinfoheader
typedef structtagbitmapinfoheader
bitmapinfoheader;
bitsize
說明bitmapinfoheader結構所需要的位元組數
bitwidth
說明畫素的寬度,以畫素為單位
biheight
說了畫素的高度,以畫素位單位。
這個值還說明該影象是倒立的圖還是正向的圖。
如果該值是整數,說明影象是倒向的,即:資料的第一行其實是影象的最後一行
如果該值是乙個負值,則影象是正向的。
大多數的bmf檔案都是倒立的,也就是說,高度值是乙個正數
biplanes
表示bmp的平面屬,顯然顯示器只有乙個平面,所以恒為1
bitbitcount
說明位元數/畫素,其值為1、4、8、16、24、32
bitcompression
說明影象壓縮的型別,其中:
bi_rgb:沒有壓縮
bi_rle8:每個畫素8位元的rle壓縮編碼,壓縮格式由2位元組組成
bi_rle4:每個畫素4位元的rle壓縮編碼,壓縮格式由2位元組組成
bi_bitfields:每個畫素的位元由指定的掩碼決定
bi_jpeg:jpeg格式
bitsizeimage
說明影象的大小,以位元組為單位。當用bi_rgb格式時,可以設定為0
bitxpelspermeter
說明水平解析度,用畫素/公尺表示
bitypelspermeter
說明垂直解析度,用畫素/公尺表示
biclrused
說明位圖實際使用的彩色表中的顏色索引數(0表示使用所以的調色版項)
biclrimporant
說明對影象顯示有重要影響的顏色索引的數目,如果是0,表示很重要
調色盤
對於200*200畫素,顏色數為16的彩色圖。每個畫素用r、g、b三個分量表示,每個分量有256個級別,用8位,也就是乙個位元組,所有每個畫素就要用到3個位元組。整個影象就要用200*200*3的大小記憶體來儲存。
如果16色圖在途中最多有16種顏色。可以採用乙個表,表中每一行記錄一種顏色的r、g、b值。這樣當我們表示乙個色素的顏色時,只需要指出該顏色在第幾行,即該顏色的索引值即可。比如如果表第0行表示255,0,0(紅色),那麼當某個色素為紅色時,只需要標註0即可。
16種顏色用4bit表示,所以乙個畫素只需要用到半個位元組。整個影象只用200*200*0.5+3*16個位元組。
這張r、g、b表就是調色盤,另一種叫法是顏色查詢表。
typedef structtagpalettentry
paletteentry;
BMP檔案格式
bmp檔案格式 bmp檔案大體上分成四個部分,如圖1所示。位 件頭bitmapfileheader 位圖資訊頭bitmapinfoheader 調色盤 palette 圖象資料 圖1.windows位 件結構示意圖 第一部分為位 件頭bitmapfileheader,是乙個結構,其定義如下 type...
BMP檔案格式
典型的位 件格式通常包含下面幾個資料塊 下面的部分將會詳細地描述位 件中儲存的資料。需要注意的是這是標準點陣圖的檔案格式,其他一些位圖影象可能根據生成檔案的應用程式不同所使用格式可能會有細微的區別。這部分是識別資訊,典型的應用程式會首先普通讀取這部分資料以確保的確是位 件並且沒有損壞。這部分告訴應用...
BMP檔案格式
位置 大小 說明 0000h 2 bm 檔案標識 0002h 4 檔案大小 0006h 4 保留 0 000ah 4 從檔案開始到位圖資料之間的偏移量 000eh 4 位圖資訊頭,用來描述點陣圖的顏色 壓縮方法等。0012h 4 點陣圖的寬度,以象素為單位 0016h 4 點陣圖的高度,以象素為單位...