【正文】
左下角Y坐標的整型(低位高位)值122圖像寬度。以像素為單位,圖像寬度的整型(低位高位)值142圖像高度。以像素為單位,圖像高度的整型(低位高位)值161圖像每像素存儲占用位(bit)數(shù)171圖像描述符字節(jié)bits 3~0:每像素的屬性位(bit)數(shù)bit 4:保留,必須為0bit 5:屏幕起始位置標志0:原點在左下角1:原點在左上角Truevision圖像必須為0bits 7~6:交叉數(shù)據(jù)存儲標志00:無交叉01:兩路奇/偶交叉10:四路交叉11:保留18可變圖像信息字段。包含一個自由格式的,長度是圖像記錄塊偏移0處的字節(jié)中的值。它常常被忽略(即偏移0處值為0),其最大可以含有255個字符。如果需要存儲更多信息,可以放在圖像數(shù)據(jù)之后可變可變顏色表數(shù)據(jù)。起始位置由前一個字段的大小決定;其長度由單項數(shù)據(jù)大小和數(shù)據(jù)項數(shù)目決定(在前面相應的說明字段中給出),每項是2字節(jié)、3字節(jié)或4字節(jié),字節(jié)中沒有使用的位(bit)被認為是屬性位。(1)4字節(jié)表項中,字節(jié)1表示BLUE、字節(jié)2表示GREEN、字節(jié)3表示RED、字節(jié)4表示屬性。(2)3字節(jié)表項中各字節(jié)依次對應BLUE、GREEN、RED。(3)2字節(jié)表項中,兩個字節(jié)分解成如下形式:arrrrrgg gggbbbbb,但是,由于低位在前,高位在后的存儲順序,從文件中讀出表項時,將先讀入gggbbbbb而后讀入arrrrrgg,a表示屬性位(續(xù)表)偏移(字節(jié))長度(字節(jié))描述可變可變圖像數(shù)據(jù)域。本區(qū)域給出了(寬度)(高度)個顏色表索引,這些索引存放在數(shù)據(jù)包中;有兩種類型的數(shù)據(jù)包:runlength數(shù)據(jù)包以及未加工的數(shù)據(jù)包。每種類型的數(shù)據(jù)包含有1字節(jié)的頭信息(其中指出了數(shù)據(jù)包類型和數(shù)目),其后是可變長度的數(shù)據(jù)域,頭信息中最高位為1表示runlength類型的數(shù)據(jù)包,當它為0時,表示未加工的數(shù)據(jù)包。對于runlength數(shù)據(jù)包,頭信息含義如下。1 bit id:7位的重復記數(shù)減1。由于7位表示的最大值為127,故最大的運行大小為128。1:c c c c c c c。對于未加工的數(shù)據(jù)包,頭信息的含義如下。1 bit id:7位的像素個數(shù)減1。由于7位表示的最大值為127,故該類型的一個數(shù)據(jù)包中像素個數(shù)不能大于128。0:n n n n n n n。對于runlength數(shù)據(jù)包而言,頭信息之后是一個簡單的顏色索引,且假定該索引被重復頭信息中低7位表示的次數(shù),runlength數(shù)據(jù)包也許會跨越掃描線(掃描線起始于某行結束于下一行);對于未加工的數(shù)據(jù)包,頭信息之后是顏色索引(數(shù)值由頭信息給出),該類型的數(shù)據(jù)包也可能跨越掃描線4. 數(shù)據(jù)類型10:游程長度(Runlength)編碼的RGB圖像游程長度編碼的RGB 。 游程長度編碼的RGB TGA圖像格式說明偏移(字節(jié))長度(字節(jié))描述01圖像信息字段(見本子表的后面)的字符數(shù)。本字段是1字節(jié)無符號整型,指出了圖像格式區(qū)別字段長度,其取值范圍是0到255,當它為0時表示沒有圖像的信息字段11該字段的內(nèi)容或者為0或者為1;0表示沒有顏色表,1表示顏色表存在。由于本格式是無顏色表的,因此此項通常被忽略21圖像類型代碼。本類型該字段為二進制1035顏色表規(guī)格。如果顏色表類型字段為0則被忽略;否則描述如下32顏色表首址。顏色表首元入口的整型(低位高位)索引52顏色表的長度。顏色表的表項總數(shù),整型(低位高位)71顏色表表項的位(bit)數(shù)。16代表16位TGA、24代表24位TGA、32代表32位TGA810圖像規(guī)格82圖像X坐標起始位置。圖像左下角X坐標的整型(低位高位)值(續(xù)表)偏移(字節(jié))長度(字節(jié))描述102圖像Y坐標起始位置。圖像左下角Y坐標的整型(低位高位)值122圖像寬度。以像素為單位,圖像寬度的整型(低位高位)值142圖像高度。以像素為單位,圖像寬度的整型(低位高位)值161圖像每像素存儲占用位(bit)數(shù)171圖像描述符字節(jié)bits 3~0:每像素的屬性位(bit)數(shù);bit 4:保留,必須為0;bit 5:屏幕起始位置標志;0:原點在左下角;1:原點在左上角;Truevision圖像必須為0;bits 7~6:交叉數(shù)據(jù)存儲標志;00:無交叉;01:兩路奇/偶交叉;10:四路交叉;11:保留18可變圖像信息字段。包含一個自由格式的,長度是圖像記錄塊偏移0處的字節(jié)中的值。它常常被忽略(即偏移0處值為0),其最大可以含有255個字符。如果需要存儲更多信息,可以放在圖像數(shù)據(jù)之后可變可變顏色表數(shù)據(jù)。如果顏色表類型為0,則該域不存在,否則越過該域直接讀?。粓D像顏色表規(guī)格中描述了每項的字節(jié)數(shù),為4之一可變可變圖像數(shù)據(jù)域。本區(qū)域給出了(寬度)(高度)個顏色表索引,這些索引存放在數(shù)據(jù)包中;有兩種類型的數(shù)據(jù)包:runlength數(shù)據(jù)包以及未加工的數(shù)據(jù)包,每種類型的數(shù)據(jù)包含有1字節(jié)的頭信息(其中指出了數(shù)據(jù)包類型和數(shù)目),其后是可變長度的數(shù)據(jù)域,頭信息中最高位為1表示runlength類型的數(shù)據(jù)包,當它為0時,表示未加工的數(shù)據(jù)包。對于runlength數(shù)據(jù)包,頭信息含義如下。1 bit id:7位的重復記數(shù)減1。由于7位表示的最大值為127,故最大的運行大小為128。1:c c c c c c c。對于未加工數(shù)據(jù)包,頭信息的含義如下。1 bit id:7位的像素個數(shù)減1。由于7位表示的最大值為127,故該類型的一個數(shù)據(jù)包中像素個數(shù)不能大于128。0:n n n n n n n。對于run length數(shù)據(jù)包,頭信息之后是一個簡單顏色值,且假定該值重復的次數(shù)為頭信息中記錄的數(shù),runlength數(shù)據(jù)包也許會跨越掃描線(掃描線起始于某行結束于下一行);對于未加工的數(shù)據(jù)包,頭信息之后是顏色值(數(shù)目由頭信息指出)。顏色表項自身有2字節(jié)、3字節(jié)或4字節(jié)。(1)3字節(jié)表項中各字節(jié)依次對應BLUE、GREEN、RED。(2)2字節(jié)表項中,兩個字節(jié)分解成如下形式:arrrrrgg gggbbbbb,但是,由于低位在前,高位在后的存儲順序,從文件中讀出表項時,將先讀入gggbbbbb而后讀入arrrrrgg;a表示屬性位。(3)4字節(jié)表項包含了分別代表blue、green、red及屬性的4個字節(jié)。(由于硬件上的原因)有的時候TGA 24類型的圖像也像TGA 32類型的圖像那樣存儲 JPEG圖像JPEG的全稱是“聯(lián)合圖片專家組(Joint Photographic Experts Group)”,是由該專家組制訂的用于連續(xù)色調(diào)(包括灰度和彩色)靜止圖像的壓縮編碼標準。JPEG標準的壓縮編碼算法是“多灰度靜止圖像的數(shù)字壓縮編碼”。JPEG標準包括3部分,即編碼器、譯碼器和交換格式。l 編碼器將原始圖像的編碼壓縮成壓縮數(shù)據(jù)。l 譯碼器將壓縮的圖像數(shù)據(jù)還原成原始圖像數(shù)據(jù)。l 圖像壓縮數(shù)據(jù)以一定的交換格式存儲,格式中包括編碼過程中采用的碼表等。JPEG標準包括以下4種運行模式。l 基本系統(tǒng)(Baseline System):基于離散余弦變換DCT(Discrete Cosine Transform)進行從左到右、從上到下的順序掃描編碼和重建圖像,實現(xiàn)信息有丟失的圖像壓縮,但重建圖像的質(zhì)量要達到難以觀察出圖像損傷的要求。它采用88像素自適應DCT算法量化以及哈夫曼(Huffman)型的熵編碼器。l 擴展系統(tǒng)(Extended System):選用基于離散余弦變換DCT的遞增工作方式,編碼過程采用具有自適應能力的算術編碼。l 無失真的預測編碼:采用幀內(nèi)預測編碼及哈夫曼編碼(或算術編碼),可保證重建圖像與原始圖像完全一樣(即均方誤差為零)。l 分層編碼:以多種分辨率對圖像進行編碼,按不同的應用要求可以獲得不同分辨率或質(zhì)量的圖像。JPEG標準定義了兩種基本的壓縮算法,即基于空間線性預測技術差分脈沖碼調(diào)制DPCM(Differential Pulse Code Modulation)的無失真壓縮算法和基于離散余弦DCT(Discrete Cosine Transform)的有失真壓縮算法。JPEG壓縮標準的壓縮比是通過量化因子(Q因子)來控制的。Q因子用來確定原始圖像的采樣精度,并產(chǎn)生一個JPEG量化矩陣,即:式中QM[i,j]為量化矩陣,Q是量化因子,V[i,j]是圖像缺省清晰度表。量化矩陣用來量化DCT變換產(chǎn)生的頻率系數(shù),量化后的系數(shù)值減少,0值的數(shù)目大大增加。Q因子越大,量化后的0值越多,壓縮比越大,因此Q因子決定著JPEG的壓縮比。JPEG的無失真壓縮率為4:1,有失真壓縮率為10:1~100:1。在壓縮率小于40:1時,人眼基本上分辨不出圖像的效果變化,可認為是“主觀無失真壓縮”。JPEG標準較復雜,但有許多公司和組織提供大量的操作JPEG的開放源碼可以利用。本設計就使用了Independent JPEG Group的Thomas G. Lane編寫的JPEGLIB2。 GIF圖像圖形交換格式(Graphics Interchange Format,簡稱GIF)文件由CompuServe公司開發(fā)并持有該圖形文件格式的版權。GIF圖像是基于顏色表存儲的,即圖像中每一點的存儲數(shù)據(jù)是該點的顏色對應于顏色列表(即調(diào)色板)的索引值。GIF圖像最多只支持8位存儲位,即最多支持256色圖像。GIF文件內(nèi)部分成許多存儲塊,用來存儲多幅圖像或者是決定圖像表現(xiàn)行為的控制塊,可用于實現(xiàn)動畫和交互式應用。GIF文件使用LZW壓縮算法壓縮圖像。GIF文件內(nèi)部是按塊劃分的,包括控制塊(Control Block)和數(shù)據(jù)塊(Data Subblocks)兩種。l 控制塊控制數(shù)據(jù)塊的行為,不同的控制塊包含一些不同的控制參數(shù)。l 數(shù)據(jù)塊只包含一些8bit的字符流,由它前面的控制塊來決定它的功能。每個數(shù)據(jù)塊大小從0到255個字節(jié)不等。數(shù)據(jù)塊的第一個字節(jié)存儲這個數(shù)據(jù)塊大?。ㄗ止?jié)數(shù)),但數(shù)據(jù)塊的大小不包括這個字節(jié)。所以即使空的數(shù)據(jù)塊也有一個字節(jié),即數(shù)據(jù)塊的大小為0x00。 GIF數(shù)據(jù)塊的結構一個GIF文件的結構可分為文件頭(File Header)、GIF數(shù)據(jù)流(GIF Data Stream)和文件終結符(Tailer)3個部分。l 文件頭包含GIF文件署名(Signature)和版本號(Version)。l GIF數(shù)據(jù)流由控制標識符、圖像塊(Image Block)和其他的一些擴展塊組成。l 文件終結符只有一個值為0x3B的字符“?!北硎疚募Y束。各個部分的具體分析如下。1. 文件頭(Header)GIF文件頭包括GIF署名(Signature)和版本號(Version)兩部分。GIF署名用來確認一個文件是否是GIF格式的文件,這一部分由3個字符組成:GIF。文件版本號也由3個字節(jié)組成,可以為87a或89a,GIF文件版本號87a表示GIF格式符合1987年5月發(fā)布的GIF標準;89a表示GIF格式符合1989年7月發(fā)布的GIF標準。 GIF文件結構2. GIF數(shù)據(jù)流(GIF Data Stream)(1)邏輯屏幕標識符(Logical Screen Descriptor)這一部分由7個字節(jié)組成,定義了GIF圖像的大?。↙ogical Screen Width and Height)、顏色深度(Color Bits)、背景色(Background Color Index)以及有無全局顏色列表(Global Color Table)和顏色列表的索引數(shù)(Index Count)。 GIF文件的邏輯屏幕標識符其中,m為全局顏色列表標志(Global Color Table Flag),當值為1時表示有全局顏色列表,pixel值有意義;CR為顏色深度(Color Resolution),CR+1確定圖像的顏色深度;s為分類標志(Sort Flag),如果值為1則表示全局顏色列表分類排列;pixel為全局顏色列表大小,pixel+1確定顏色列表的索引數(shù)(2的pixel+1次方)。(2)全局顏色列表(Global Color Table)全局顏色列表必須緊跟在邏輯屏幕標識符后面,每個顏色列表索引條目由3個字節(jié)組成,按R、G、B的順序排列。(3)圖像標識符(Image Descriptor)由于一個GIF文件內(nèi)可以包含多幅圖像,故一幅圖像結束之后緊接著是下一幅圖像的標識符,圖像標識符以0x2C(“,”)字符開始,定義緊接著它的圖像的性質(zhì),包括圖像相對于邏輯屏幕邊界的偏移量、圖像大小以及有無局部顏色列表和顏色列表大小,由10個字節(jié)組成。其中,第1個字節(jié)為二進制00101100,即圖像標識符的開始標志0x2C;第3個字節(jié)為X方向的偏移量;5字節(jié)為Y方向偏移量;7字節(jié)為圖像寬度;9字節(jié)為圖像高度;第10字節(jié)從高位到低位又分為m、i、s、r和pixel共5部分,其中,m為局部顏色列表標志(Local Color Table Flag),值為1時標識緊接在圖像標識符之后,有一個局部顏色列表,供緊跟在它之后的一幅圖像使用;值為0時使用全局顏色列表,忽略pixel值;i為交織標志(Interlace Flag),值為1時圖像數(shù)據(jù)使用交織方式排列,否則使用順序排列;s為分類標志(Sort Flag),如果值為1則表示緊跟著的局部顏色列表分類排列;r為保留位,占2位,必須初始化為0;pixel為局部顏色列表大小(Size of Local Color Table),占3位,pixel+1就是顏色列表的位數(shù)。(4)局部顏色列表(Local Color Table)如果