版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、位圖格式詳解(BitMap)2008101815:25位圖和位圖和BitbltBitblt位圖是一個(gè)二維的位數(shù)組,此數(shù)組的每一個(gè)元素與圖像的像素一一對應(yīng)?,F(xiàn)實(shí)世界的圖像被捕獲以后,圖像被分割成網(wǎng)格,并以像素作為取樣單位。位圖中的每個(gè)像素值指明了一個(gè)單位網(wǎng)格內(nèi)圖像的平均顏色。位圖代表了Windows程序中存儲(chǔ)圖像信息的兩種方法之一,另一種形式是元文件。位圖也有兩種:GDI位圖對象和設(shè)備無關(guān)的位圖(DIB:deviceindependent
2、bitmap)。位圖基礎(chǔ)位圖常用來表示來自真實(shí)世界的復(fù)雜圖像,元文件更適合于描述由人或者機(jī)器生成的圖像。它們都能存于內(nèi)存或作為文件存于磁盤上,且能通過剪貼板在Windows應(yīng)用程序間傳輸。位圖和元文件的區(qū)別在于光柵圖像和矢量圖像間的差別。光柵圖像用離散的像素來處理輸出設(shè)備;矢量圖像用笛卡爾坐標(biāo)系統(tǒng)來處理輸出設(shè)備,可在其中繪制線和填充對象。位圖的缺點(diǎn):1、容易受設(shè)備依賴性的影響。2、位圖常暗示了特定的顯示分辨率和圖像縱橫比,在縮放后容易出
3、現(xiàn)失真。3、存儲(chǔ)空間大。但位圖具有處理速度快的優(yōu)點(diǎn)。位圖可以手工創(chuàng)建,也可計(jì)算機(jī)代碼生成,還可由硬件設(shè)備把現(xiàn)實(shí)世界輸入到計(jì)算機(jī),如數(shù)碼相機(jī),它們通常是使用接觸到光就釋放電荷的電荷耦合裝置(CCD:gecoupleddevice)將光的強(qiáng)度轉(zhuǎn)換為電荷,再用模數(shù)轉(zhuǎn)換裝置(ADC:Analogtodigital)轉(zhuǎn)換為數(shù)字再排列為位圖。位圖尺寸位圖呈矩形,具有空間尺寸,以像素為單位度量位圖的高度和寬度。以位于圖像左上角為位圖原點(diǎn),從0開始計(jì)數(shù)
4、。位圖的空間尺寸也指定了其分辨率,但此詞具有爭議,分辨率也指單位長度內(nèi)的像素?cái)?shù)。位圖是矩形的,但內(nèi)存是線性的。大多數(shù)位圖按行存儲(chǔ)在內(nèi)存中,且從頂行像素開始從左到右直到底行結(jié)束。位圖還有顏色度量單位:指每個(gè)像素所需要的位數(shù),也稱顏色深度(coldepth)、位數(shù)(bitcount)、或位每像素(bpp:bitsperpixel)。每個(gè)像素用1位來描述的位圖稱為二級(jí)(bilevel)、二色(bicol)或單色(monochrome)位圖。每
5、個(gè)像素也可用多位來描述,可以表示的顏色數(shù)等于2的i次方(i為位數(shù))。如何將顏色位的組合與人們所熟識(shí)的顏色相對應(yīng)是處理位圖時(shí)經(jīng)常出現(xiàn)的問題。位塊傳送一、BitBlt函數(shù):原樣復(fù)制整個(gè)視頻顯示器可看作是一幅大位圖,其上的像素由存儲(chǔ)在視頻顯示適配卡上內(nèi)存中的位來描述。所以,我們可以使用BitBlt函數(shù)來完成將圖像從視頻顯示的一個(gè)區(qū)域復(fù)制到另一個(gè)區(qū)域。這就是位塊傳送(bitblocktranfer)。此函數(shù)是像素移動(dòng)程序,實(shí)際上對像素執(zhí)行了一次
6、位運(yùn)算操作。BitBlt函數(shù)從稱為“源”的設(shè)備描述表中將一個(gè)矩形區(qū)的像素傳送到稱為“目標(biāo)”的另一個(gè)設(shè)備描述表中相同大小的矩形區(qū)。源和目標(biāo)設(shè)備描述表可以相同。此函數(shù)語法如下:BitBlt(hdcDstxDstyDstcxcyhdcSrcxSrcySrcdwROP)xSrc和ySrc參數(shù)指明了源圖像左上角在源設(shè)備描述表中的坐標(biāo)位置。cx和cy是圖像的寬度和高度。xDst和yDst是圖像復(fù)制到的設(shè)備描述表中的坐標(biāo)位置。dwROP是光柵操作符。
7、注意:BitBlt是從實(shí)際視頻顯示內(nèi)存?zhèn)魉拖袼兀簿褪钦f整個(gè)顯示屏上的圖像都存于顯存中,若圖像超出了顯示屏,那么BitBlt只傳送在顯示屏上的部分。BitBlt的最大限制是兩個(gè)設(shè)備描述表必須兼容,就是說兩者的每個(gè)像素都具有相同的位數(shù)。所以,不能用它將屏幕上的某些圖形復(fù)制到打印機(jī)。二、StretchBlt函數(shù):拉伸位圖此函數(shù)語法如下:StretchBlt(hdcDstxDstyDstcxDstcyDsthdcSrcxSrcySrccxSr
8、ccySrcdwROP)BitBlt和StretchBlt函數(shù)中所有的坐標(biāo)與大小都是基于邏輯單位的。但如果BitBlt函數(shù)中DDB的位格式高度依賴于設(shè)備,所以它不適用于圖像交換。DDB內(nèi)沒有色彩表來指定位圖的位與色彩之間的聯(lián)系,它僅當(dāng)在Windows會(huì)話的生存期內(nèi)被創(chuàng)建和清除時(shí)才有意義。設(shè)備無關(guān)的位圖(DIB)提供了適用于交換的圖像文件格式。DIB內(nèi)的位圖幾乎沒有被壓縮,適用于在程序中直接操作。如果在內(nèi)存中有DIB,就可以提供指向該DI
9、B的指針作為某些函數(shù)的參數(shù),來顯示DIB或把DIB轉(zhuǎn)化為DDB。DIB文件格式DIB作為一種文件格式,它的擴(kuò)展名為.BMP,在極少數(shù)的情況下為.DIB。Windows使用的位圖圖像被當(dāng)作DIB文件創(chuàng)建,并作為只讀資源存儲(chǔ)在程序的可執(zhí)行文件中。程序能將DIB文件減去前14個(gè)字節(jié)加載到連續(xù)的內(nèi)存塊中形成“緊縮DIB(packedDIB)格式的位圖”。程序可以使用緊縮DIB格式,通過Windows剪帖板來交換圖像或創(chuàng)建畫刷,也或完全訪問DIB
10、的內(nèi)容,并以任意方式修改DIB。一、OS2風(fēng)格的DIBDIB文件有4個(gè)主要的部分:文件頭、信息頭、RGB色彩表(不一定有)和位圖像素位。前兩部分??闯墒且环NC的數(shù)據(jù)結(jié)構(gòu),第三部分是數(shù)據(jù)結(jié)構(gòu)的數(shù)組。對內(nèi)存中緊縮的DIB格式只有3個(gè)部分,就是缺少文件頭。DIB文件以14個(gè)字節(jié)的BITMAPFILEHEADER結(jié)構(gòu)的文件頭開始,指出了文件的類型、文件大小及像素位的偏移量;此后是12個(gè)字節(jié)的BITMAPCEHEADER結(jié)構(gòu),指出了DIB的大小及
11、每像素的位數(shù)。BITMAPCEHEADER結(jié)構(gòu)中的bcBitCount字段一般為1、4、8或24,分別對應(yīng)2色、16色、256色和全色的DIB。對于前三種BITMAPCEHEADER后緊跟色彩表,對24位DIB,則無色彩表。色彩表是一個(gè)RGBTRIPLE結(jié)構(gòu)(此結(jié)構(gòu)每個(gè)為3字節(jié)大?。┑臄?shù)組,數(shù)組中的每個(gè)元素代表圖像中的每種顏色(指這種圖像由多少種顏色來描述,如8位圖就有256種顏色,這256種顏色就由這個(gè)數(shù)組的各個(gè)元素來指定,這個(gè)數(shù)組的
12、大小就是256)。二、從下向上DIB中的像素位是按水平行組織的,常稱“掃描線”。行數(shù)為BITMAPCEHEADER結(jié)構(gòu)中的bcHeight字段。但DIB從圖像的底行開始,從下往上掃過圖像。所以,在DIB中,圖像的底行是文件的第一行,圖像的頂行是文件的最后一行。這個(gè)文件的第一行指的是DIB文件的色彩表后的位圖像素位的第一個(gè)像素行,最后一行是位圖像素位的最后一行。三、DIB像素位DIB文件的最后部分由實(shí)際的DIB的像素位組成。像素位是由從圖
13、像的底行開始,并沿著圖像向上增長的水平行組織的。DIB中的行數(shù)為BITMAPCEHEADER結(jié)構(gòu)的bcHeight字段,每行的像素?cái)?shù)為該結(jié)構(gòu)的bcWidth字段。每行從最左邊的像素?cái)?shù)開始,直到圖像的右邊。每個(gè)像素的位數(shù)可以從bcBitCount字段獲取,為1、4、8或24。1位DIB:每字節(jié)為8像素,最左邊的像素是第一個(gè)字節(jié)的最高位,色彩表中有2項(xiàng)。4位DIB:每字節(jié)為2像素,最左邊的像素是第一個(gè)字節(jié)的高4位,色彩表中有16項(xiàng)。8位DI
14、B:每字節(jié)為1像素,色彩表中有256項(xiàng)。24位DIB:每3字節(jié)表示1個(gè)像素,每個(gè)字節(jié)代表紅、綠和藍(lán)的顏色值,就可以描述三種顏色的256個(gè)值,所以這個(gè)DIB無色彩表。四、擴(kuò)展的WindowsDIB這種DIB格式與前面的格式一樣,以BITMAPFILEHEADER結(jié)構(gòu)開始,但是接著是40字節(jié)的BITMAPINFOHEADER結(jié)構(gòu),而不是12字節(jié)的BITMAPCEHEADER結(jié)構(gòu)。另一個(gè)變化是:對于使用BITMAPINFOHEADER結(jié)構(gòu)的1
15、位、4位和8位DIB,色彩表不是RGBTRIPLE結(jié)構(gòu)的數(shù)組,而是4字節(jié)的RGBQUAD結(jié)構(gòu)的數(shù)組。BITMAPINFOHEADER結(jié)構(gòu)的biClrUsed是非常重要的字段,它影響色彩表中條目的數(shù)量,對于4位和8位的DIB,它能分別指出色彩表的條目數(shù)小于16或256個(gè);對于16位、24位或32位DIB也可以為非0,在這種情況下Windows不使用色彩表來解釋像素位,但它指出DIB中色彩表的大小,程序使用該信息來設(shè)置調(diào)色板在256顯示器上
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論