圖像文件格式BMP文件格式詳解_第1頁
圖像文件格式BMP文件格式詳解_第2頁
圖像文件格式BMP文件格式詳解_第3頁
圖像文件格式BMP文件格式詳解_第4頁
圖像文件格式BMP文件格式詳解_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、5.2 BMP文件格式BMP文件格式是Microsoft Windows下最常見的圖像文件格式之一,它采用位映射存儲格式,除了圖像深度可選以外,不采用其他任何壓縮,因此,BMP文件所占用的空間很大。BMP文件的圖像深度可選lbit、4bit、8bit及24bit。BMP文件存儲數(shù)據(jù)時,圖像的像素值在文件中的存放順序為從左到右,從下到上 ,也就是說,在BMP文件中首先存放的是圖像的最后一行像素,最后才存儲圖像的第一行像素,但對與同一行的像素,則是按照先左邊后右邊的的順序存儲的;另外一個需要關(guān)注的細(xì)節(jié)是:文件存儲圖像的每一行像素值時,如果存儲該行像素值所占的字節(jié)數(shù)為4的倍數(shù),則正常存儲,否則,需要

2、在后端補(bǔ)0,湊足4的倍數(shù)。由于BMP文件格式是Windows環(huán)境中交換與圖有關(guān)的數(shù)據(jù)的一種標(biāo)準(zhǔn),因此在Windows環(huán)境中運行的圖形圖像 HYPERLINK /view/37.htm t _blank 軟件都支持BMP圖像格式。5.2.1典型的BMP HYPERLINK /view/42116.htm t _blank 圖像文件由四部分組成:1、位圖頭文件數(shù)據(jù)結(jié)構(gòu)主要包含文件的大小、文件類型、圖像數(shù)據(jù)偏離文件頭的長度等信息;2、 HYPERLINK /view/56073.htm t _blank 位圖信息數(shù)據(jù)結(jié)構(gòu)包含圖象的尺寸信息、圖像用幾個比特數(shù)值來表示一個像素、圖像是否壓縮、圖像所用的顏

3、色數(shù)等信息;3、 HYPERLINK /view/1120949.htm t _blank 調(diào)色板包含圖像所用到的顏色表,顯示圖像時需用到這個 顏色表來生成調(diào)色板,但如果圖像為真彩色,既圖像的每個像素用24個比特來表示,文件中就沒有這一塊信息,也就不需要操作調(diào)色板。4、位圖數(shù)據(jù)記錄了位圖的每一個像素值或該對應(yīng)像素的顏色表的索引值,圖像記錄順序是在掃描行內(nèi)是從左到右, 掃描行之間是從下到上。這種格式我們又稱為 Bottom_Up位圖,當(dāng)然與之相對的還有Up_Down形式的位圖,它的記錄順序是從上到下的,對于這種形式的位圖,也不存在壓縮形式。5.2.2 BMP文件結(jié)構(gòu)位圖文件(bitmap fil

4、e, BMP)格式是Windows采用的圖像文件存儲格式,在Windows環(huán)境下運行的所有圖像處理軟件都支持這種格式。 Windows3.0以后的BMP格式與顯示設(shè)備無關(guān),因此把這種BMP格式稱為設(shè)備無關(guān)位圖(Device Independentbit Bitmap , DIB)格式, Windows能夠在任何類型的顯示設(shè)備上顯示BMP位圖。BMP位圖默認(rèn)的文件擴(kuò)展名是bmp。1、文件結(jié)構(gòu)位圖文件可看成由4個部分組成:位圖文件頭(Bitmap-File)、位圖信息頭(Bitmap-Information Header)、彩色表(Color Table)和定義位圖的字節(jié)陣列,它們的名稱和符號如下

5、表1所示:表1 BMP圖像文件組成部分的名稱和符號位圖文件的組成結(jié)構(gòu)名稱符 號位圖文件頭BITMAPEILEHEADERbmfh位圖信息頭BITMAPINFOHEADERbmib彩色表RGBQUADaColors 圖像數(shù)據(jù)陣列字節(jié)BITMAPDATAaBitmapBits 2、位圖文件結(jié)構(gòu)可綜合在下表中:表2 位圖文件結(jié)構(gòu)偏移量名稱大?。╞yte)內(nèi)容圖像文件頭000h標(biāo)識符2兩字節(jié)的內(nèi)容用來識別位的類型:BMWindows 3.x,9x,NT,CI、CP、IC、PTOS/2002hFile Size4用字節(jié)表示的整個文件的大小006hReserved4保留,設(shè)置為0000AhBitmap D

6、ata Offset4從文件開始到位圖數(shù)據(jù)開始之間的數(shù)據(jù)(Bitmap Data)的偏移量圖像信息頭000EhBitmap Header Size4位圖信息頭的長度,用來描述位圖的顏色和壓縮方法等。下面的長度表示:28 hWindows3.X ,9X,NT0Ch/F0hOS/2 1.x0012hWidth4位圖的寬度,以像素為單位0016hHeight4位圖的高度,以像素為單位001AhPlanes2位圖的位面數(shù)001ChBites Per Pixel2每個像素的位數(shù)1單色位圖;416色圖;8256色位圖1616bit 高彩位圖;2424位真彩位圖001EhCompression4壓縮說明:0

7、:無壓縮;1RLE 8-bit/pixel(BI_RLE4)2RLE 4-bit/pixel(BIRLE8)3Bitfields(BI_BITFIELDS)0022hBitmap Data Size4用字節(jié)數(shù)表示的位圖數(shù)據(jù)的大小。該數(shù)必須是4的倍數(shù)。0026hHresolution4用pixel/m表示的水平分辨率002AhVresolution4用pixel/m表示的水平分辨率002EhColors4位圖使用的顏色數(shù)。如8bit/pixel表示為100h或者2560032hImportant Colors4指定重要的顏色數(shù)。當(dāng)該域的值等于顏色數(shù)時,表示所有顏色都一樣重要0036hPalett

8、eN*4調(diào)色板規(guī)范。對于調(diào)色板中的每個表項,這4個字節(jié)用下述方法來描述RGB的值:1字節(jié)用于表示RGB中的藍(lán)色分量1字節(jié)用于表示RGB中的綠色分量1字節(jié)用于表示RGB中的紅色分量1字節(jié)用于表示填充符(設(shè)置為0)0436hBitmap DataX該域的大小取決于壓縮方法它包含所有的位圖數(shù)據(jù)字節(jié),這些數(shù)據(jù)字節(jié)實際就是彩色調(diào)節(jié)器色板的索引號3、結(jié)構(gòu)詳解(1)位圖文件頭:它包含有關(guān)于文件類型、文件大小和存放位置等信息,在Windows 3.0以上版本的位圖文件中用BITMSPFILEHEADER結(jié)構(gòu)體來定義。位圖文件頭包含了圖像類型、圖像大小、圖像數(shù)據(jù)存放地址和兩個保留未使用的字段。BMP文件頭數(shù)據(jù)結(jié)

9、構(gòu)含有BMP文件的類型、文件大小和位圖起始位置等信息。 其結(jié)構(gòu)定義如下:typedef struct tagBITMAPFILEHEADERWORD bfType; / 位圖文件的類型,必須為BMDWORD bfSize; / 位圖文件的大小,以字節(jié)為單位 WORD bfReserved1; / 位圖文件保留字,必須為0WORD bfReserved2; / 位圖文件保留字,必須為0DWORD bfOffBits; / 位圖數(shù)據(jù)的起始位置,以相對于位圖/ 每個像素所需的位數(shù),必須是 1( 雙色), 4(16 色),8(256 色)或24(真彩色)/ 文件頭的偏移量表示,以字節(jié)為單位 BITMA

10、PFILEHEADER; /該結(jié)構(gòu)占據(jù)14個字節(jié)。(2)位圖信息頭:位圖信息用BITMAPINFO結(jié)構(gòu)體來定義,位圖信息頭包含了位圖信息頭的大小、圖像的寬高、圖像的色深、壓縮說明圖像數(shù)據(jù)的大小和其他一些參數(shù)。BMP位圖信息頭數(shù)據(jù)用于說明位圖的尺寸等信息。typedef struct tagBITMAPINFOHEADERDWORD biSize; / 本結(jié)構(gòu)所占用字節(jié)數(shù)LONG biWidth; / 位圖的寬度,以像素為單位LONG biHeight; / 位圖的高度,以像素為單位WORD biPlanes; / 目標(biāo)設(shè)備的級別,必須為1WORD biBitCount / 每個像素所需的位數(shù),

11、必須是1(雙色) (黑白二色圖),/ 4(16色),8(256色)或24(真彩色)之一 (新的.bmp格式支持32位色)DWORD biCompression; / 位圖壓縮類型,必須是 0(不壓縮),/ 1(BI_RLE8壓縮類型)或2(BI_RLE4壓縮類型)之一DWORD biSizeImage; / 位圖的大小,以字節(jié)為單位LONG biXPelsPerMeter; / 位圖水平分辨率,每米像素數(shù)LONG biYPelsPerMeter; / 位圖垂直分辨率,每米像素數(shù)DWORD biClrUsed; / 位圖實際使用的顏色表中的顏色數(shù)DWORD biClrImportant; / 位

12、圖顯示過程中重要的顏色數(shù) BITMAPINFOHEADER; /該結(jié)構(gòu)占據(jù)40個字節(jié)它由位圖信息頭和彩色表組成,前者用BITMAPINFOHEADER結(jié)構(gòu)體定義,后者用RGBQUAD結(jié)構(gòu)體定義。1)彩色表的定位:應(yīng)用程序進(jìn)行彩色表的定位時,可使用存儲在biSize成員中的信息來查找在BITMAPINFO結(jié)構(gòu)體中的彩色表。2)biBitCount:biBitCount=1表示位圖最多有兩種顏色,黑色和白色。圖像數(shù)據(jù)陣列中的每一位表示一個pixel:biBiCount=4表示位圖最多有16種顏色。每個像素用場bit表示,交用這4bit作為彩色表的表項來查找該像素的顏色。3)ClrUsed:BITM

13、APINFOHEADER結(jié)構(gòu)中的成員ClrUsed指定實際使用的顏色數(shù)目。4)8bit/pixel的圖像數(shù)據(jù)壓縮:BI_RLE8 8bit/pixel的RLE壓縮編碼,可使用編碼方式和絕對方式中的任何一種進(jìn)行壓縮,這兩種方式可在同一幅圖中的任何地方使用。編碼方式 由此及彼個字節(jié)組成,第一個字節(jié)指定使用相同顏色的像素數(shù)目,第二個字節(jié)指字使用的顏色索引。此外,這個字節(jié)對中的第一個字節(jié)可設(shè)置為0,聯(lián)合使用第二個字節(jié)的值表示:第二個字節(jié)的值為0 行的結(jié)束第二個字節(jié)的值為1 圖像結(jié)束第二個字節(jié)的值為2 其后的兩個字節(jié)表示下一個像素從當(dāng)前開始的水平和垂直位置的偏移量絕對方式 第一個字節(jié)設(shè)置為0,而第二個字

14、節(jié)設(shè)置為03h0FFh之間的一個值。在這種方式中,第二個字節(jié)表示跟在這個字節(jié)后面的字節(jié)數(shù),每個字節(jié)包含單個像素的顏色索引。5)每個像素為4位的圖像數(shù)據(jù)壓縮:BI_RLE4 每個像素為4位的RLE壓縮編碼,同樣也可使用編碼方式和絕對方式中的任何一種進(jìn)行壓縮,這兩種方式也可在同一幅圖中的任何地方使用。編碼方式 由2個字節(jié)組成,第一個字節(jié)指定像素數(shù)目,第二個字節(jié)包含兩種顏色索引。絕對方式 這個字節(jié)對中的第一個字節(jié)設(shè)置為0,第二個字節(jié)包含有顏色索引數(shù),其后續(xù)字節(jié)包含有顏色索引,顏色索引存放在該字節(jié)的高、低4位中,一個顏色索引對應(yīng)一個像素。BI_RLE4也同樣聯(lián)合使用第二個字節(jié)中的值表示:第二個字節(jié)的值

15、為0 行的結(jié)束第二個字節(jié)的值為1 圖像結(jié)束第二個字節(jié)的值為2 其后的兩個字節(jié)表示下一個像素從當(dāng)前開始的水平和垂直位置的偏移量(3)彩色表:包含的元素與位圖所具有的顏色數(shù)相同,像素的顏色用RGBQUAD結(jié)構(gòu)來定義。彩色表中的顏色按顏色的重要性排序,這可輔助顯示驅(qū)動程序為不能顯示足夠多顏色數(shù)的顯示設(shè)備顯示彩色圖像。顏色表用于說明位圖中的顏色,它有若干個表項,每一個表項是一個RGBQUAD類型的結(jié)構(gòu),定義一種顏色。RGBQUAD結(jié)構(gòu)的定義如下:typedef struct tagRGBQUAD BYTE rgbBlue; / 藍(lán)色的亮度(值范圍為0-255)BYTE rgbGreen; / 綠色的亮

16、度(值范圍為0-255)BYTE rgbRed; / 紅色的亮度(值范圍為 0-255)BYTE rgbReserved; / 保留,必須為0 RGBQUAD;彩色表/調(diào)色板(color table)是單色、16色和256色圖像文件所特有的,相對應(yīng)的調(diào)色板大小是2、16和256,調(diào)色板以4字節(jié)為單位,每4個字節(jié)存放一個顏色值,圖像的數(shù)據(jù)是指向調(diào)色板的索引??梢詫⒄{(diào)色板想象成一個數(shù)組,每個數(shù)組元素的大小為4字節(jié),假設(shè)有一256色的BMP圖像的調(diào)色板數(shù)據(jù)為:調(diào)色板0=黑、調(diào)色板1=白、調(diào)色板2=紅、調(diào)色板3=藍(lán)調(diào)色板255=黃圖像數(shù)據(jù)01 00 02 FF表示調(diào)用調(diào)色板1、調(diào)色板0、調(diào)色板2和調(diào)色板255中的數(shù)據(jù)來顯示圖像顏色。每個調(diào)色板的大小為4字節(jié),按藍(lán)、綠、紅存儲一個顏色值。(4)位圖數(shù)據(jù):緊跟在彩色表之后的是圖像數(shù)據(jù)字節(jié)陣列。圖像的每一掃描行由表示圖像像素的連續(xù)的字節(jié)組成,每一行的字節(jié)數(shù)取決于圖像的顏色數(shù)目和用像素表示的圖像寬度。位圖的一個像 素值所占的字節(jié)數(shù):當(dāng)biBitCount=1時,8個像素占1個字節(jié);當(dāng)biBitCount=4時,2個像素占1個字節(jié);當(dāng)biBitCount=8 時,1個像素占1個字節(jié);當(dāng)biBitCount=24時,1個像素占3個字節(jié),此時圖像為真彩色圖像。當(dāng)圖像不是為真彩色時,圖像文件中包含顏色表,位 圖的數(shù)據(jù)表示對應(yīng)像素點在顏色表中相應(yīng)的索引值,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論