gif圖像格式介紹_第1頁
gif圖像格式介紹_第2頁
gif圖像格式介紹_第3頁
gif圖像格式介紹_第4頁
gif圖像格式介紹_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、gif圖片格式解析簡介:GIF(Graphics Interchange Format)是CompuServe公司開發(fā)的圖像文件存儲格式,1987年開發(fā)的GIF文件格式版本號是GIF87a,1989年進(jìn)行了擴(kuò)充,擴(kuò)充后的版本號定義為GIF89a。 GFI圖像文件以數(shù)據(jù)塊(block)為單位來存儲圖像的相關(guān)信息。一個(gè)GIF文件由表示圖形/圖像的數(shù)據(jù)塊、數(shù)據(jù)子塊以及顯示圖形/圖像的控制信息塊組成,稱為GIF數(shù)據(jù)流(Data Stream)。數(shù)據(jù)流中的所有控制信息塊和數(shù)據(jù)塊都必須在文件頭(Header)和文件結(jié)束塊(Trailer)之間。 GIF文件格式采用了LZW(Lempel

2、-Ziv Walch)壓縮算法來存儲圖像數(shù)據(jù),定義了允許用戶為圖像設(shè)置背景的透明(transparency)屬性。此外,GIF文件格式可在一個(gè)文件中存放多幅彩色圖形/圖像。如果在GIF文件中存放有多幅圖,它們可以像演幻燈片那樣顯示或者像動(dòng)畫那樣演示。 GIF 語法.語法是用來表達(dá)序列的一種符號形式,并用這個(gè)表達(dá)序列中的一些對象來形成更大的對象。語法也用于表達(dá)在給定的位置出現(xiàn)對象的數(shù)目。在此給出的語法用來說明形成gif數(shù)據(jù)流的塊序列,用一些規(guī)則列表來表達(dá)。下面列出用于gif語法的符號定義。圖例: <> 語法詞:= 符號定義* 0個(gè)或更多的事件發(fā)生+ 1個(gè)或更多的事件發(fā)生|

3、替代元素 可選元素gif語法的符號定義:<GIF 數(shù)據(jù)流> := 頭部 <邏輯視屏> <數(shù)據(jù)>* 尾記錄這個(gè)規(guī)則將<Gif 數(shù)據(jù)流>實(shí)體定義如下。它必須以頭部開始,頭部后面接一個(gè)邏輯視屏實(shí)體,該實(shí)體藥用其他規(guī)則來定義。最后,數(shù)據(jù)實(shí)體接結(jié)束符。數(shù)據(jù)實(shí)體后面的*表示數(shù)據(jù)實(shí)體可以在此位置出現(xiàn)0或多次。語法:<Gif 數(shù)據(jù)流> := 頭部 <邏輯視屏> <數(shù)據(jù)>* 尾記錄<邏輯視屏> := 邏輯視屏描述塊 全局色表<數(shù)據(jù)> := <成象塊> |<特殊用途塊><成象塊

4、> := 圖象控制擴(kuò)充 <成象塊><成象塊> := <基于表的圖象> |純文本擴(kuò)充<基于表的圖象> := 圖象描述符 局部色表 圖象數(shù)據(jù)<特殊用途塊> := 應(yīng)用擴(kuò)充 |注釋擴(kuò)充 gif數(shù)據(jù)流中的數(shù)據(jù)塊可以分為三組:控制塊、成象塊和特殊用途塊??刂茐K,如:頭部、邏輯視屏描述塊、圖像控制擴(kuò)充和尾記錄,包含用于控制處理數(shù)據(jù)流或設(shè)置硬件參數(shù)的信息。成像塊,如:圖像描述符和純文本擴(kuò)充,包含用于在顯示設(shè)備上成像的信息和數(shù)據(jù)。特殊用途塊,如:注釋擴(kuò)充和應(yīng)用擴(kuò)充,包含那些既不用于處理數(shù)據(jù)流也不用于在顯示設(shè)備上成象的信息。除了邏輯視屏

5、描述塊和全局色表之外,特殊用途塊的作用域是整個(gè)數(shù)據(jù)流,而其他控制塊的作用域是有限的,僅限于對他們后面的成象塊起作用。特殊用途塊不對任何控制塊構(gòu)成限制,它對于解碼過程來說是透明的。成象塊及擴(kuò)充用于控制塊及擴(kuò)充的作用域限定。塊的標(biāo)記分為三段:除尾記錄0x3b之外,0x000x7f用于成象塊;0x800xf9用于控制塊;0xfa0xff用于特殊用途塊。解碼器通過識別塊標(biāo)記來處理塊的作用域。 解釋:色表- gif格式利用色表來顯示基于光柵的圖像。色表分為全局色表和局部色表。全局色表對于那些沒有設(shè)置局部色表的圖像起作用。全局色表的作用域是整個(gè)數(shù)據(jù)流。局部色表對于緊接在其后的單張圖像起作用。這兩

6、種色表都是可選的。/*全局色表這東西是我們感興趣的東西,它有點(diǎn)像png格式定義種的調(diào)色板,如果要修改gif圖片的顏色,哈哈,修改這個(gè)全局色表就可以.如果有全局色表塊,那么它一定從gif流的14個(gè)字節(jié)開始(頭部6個(gè) + 邏輯視頻描述塊7個(gè))。*/ 以下是各數(shù)據(jù)塊的說明,如果注明為版本89a的話,則說明這個(gè)數(shù)據(jù)塊不會(huì)在87a版的協(xié)議中出現(xiàn). 頭部(6個(gè)字節(jié))              標(biāo)識符(3 字節(jié)) -GIF   &

7、#160;   版本(3 字節(jié))   -87a (or 89a) 邏輯視屏描述塊              邏輯屏幕寬(2字節(jié))              邏輯屏幕高(2字節(jié))         

8、60;    Packed Fields (1字節(jié))              背景色索引(1字節(jié))              象素高寬比(1字節(jié))Packed Fields說明:全局色表標(biāo)志 1 Bit顏色方案 3 Bits短標(biāo)志 1 Bit全局色表尺寸 3 Bits解釋:   

9、;           背景顏色索引 - 為背景顏色指向全局色表。背景顏色是指那些沒有背圖像覆蓋的視屏部分的顏色。若全局色表標(biāo)志位置為0,則該字段也被值0,并且被忽略。象素高寬比 - 用于計(jì)算原圖像中像素的近似高寬比。如果該字段的值為非0,則象素的高寬比由下面的公式計(jì)算:高寬比 = (象素高寬比 + 15) / 64該字段的取值范圍從最寬的比值4:1到最高的比值1:4,遞增的步幅為1/64。取值: 0 - 沒有比值,1255 - 用于計(jì)算的值。全局色表標(biāo)志 - 指示有沒有全局色表,如果該標(biāo)志位置

10、1,則全局色表會(huì)緊接在該塊之后出現(xiàn)。該位也用于解釋是否選用背景顏色索引字段。若該位置1,則背景顏色索引字段的值將指向背景顏色表。色彩方案 - 提供給原始圖像的每個(gè)顏色的位數(shù)減1。這個(gè)值代表圖像中所使用的整個(gè)調(diào)色板的大小,而不是圖像中所使用的顏色的數(shù)量。例如,若該字段的值為3,則圖像中所使用的調(diào)色板的每個(gè)色值占4位。短標(biāo)志 - 表明全局色表是否被排序。如果該位置1,則全局色表按照重要性遞減的原則進(jìn)行了排序。典型地,是按照顏色的使用頻度進(jìn)行遞減排序,使用頻度最高的顏色排在色表的最前面。這樣便可幫助解碼器選擇最好的顏色子集來成象。全局色表的尺寸 - 如果全局色表標(biāo)志位置1,則該字段的值記錄全局色表中

11、所占用的字節(jié)數(shù)。 全局色表該塊包含一個(gè)按照字節(jié)順序表示紅-綠-藍(lán)三元色的色表。全局色表用于那些沒有局部色表的圖像和純文本擴(kuò)充。在邏輯視屏描述塊中的全局色表標(biāo)志位置1時(shí)表示有全局色表。全局色表緊接在邏輯視屏描述塊之后,占用的字節(jié)數(shù)為:3*2(全局色表尺寸+1)數(shù)據(jù)組成格式為:              Red 0            &#

12、160; Green 0              Blue 0                            Red n      

13、0;       Green n              Blue n 圖像控制擴(kuò)充(版本-89a)       圖像控制擴(kuò)充包含在處理一個(gè)成象塊時(shí)所需的參數(shù)。擴(kuò)充只包括一個(gè)數(shù)據(jù)子塊。該塊是可選的。通常只有一個(gè)圖像控制擴(kuò)充在成象塊之前。這也是在一個(gè)數(shù)據(jù)流中對成象控制擴(kuò)充的唯一限制。數(shù)據(jù)組成格式為:   &#

14、160;   擴(kuò)充導(dǎo)入符(1字節(jié))圖象控制標(biāo)記(1字節(jié))塊尺寸(1字節(jié))<Packed Fields>延長時(shí)間(2字節(jié))透明顏色索引(1字節(jié))塊結(jié)束(1字節(jié))Packed Fields說明:保留 3 Bits配置方法 3 Bits用戶輸入標(biāo)志 1 Bit透明顏色標(biāo)志 1 Bit解釋:擴(kuò)充引入 - 用于識別一個(gè)擴(kuò)充塊的開始,該字段為固定值0x21。圖像控制標(biāo)號 - 識別當(dāng)前塊是否為圖形控制擴(kuò)充。該字段為固定值 0xF9。塊尺寸 - 塊中所包含的字節(jié)數(shù)。從塊尺寸字段開始到快結(jié)束符(不含結(jié)束符)。該字段包含固定值4。配置方法 - 指示圖像顯示后的處理方法。值: 0 -

15、 無指定的配置,解碼器不需要做任何處理。1 - 不做配值。圖像將被留在原位置。2 - 恢復(fù)背景顏色。圖像所占的區(qū)域必須備恢復(fù)為背景顏色。3 - 恢復(fù)以前的顏色。解碼器需要將圖像區(qū)域恢復(fù)為原來成象的顏色。4-7 - 未定義。用戶輸入標(biāo)志 - 說明在繼續(xù)處理之前是否需要用戶輸入??梢院洼斎胙訒r(shí)一起使用。透明標(biāo)志 - 表明在透明索引字段是否給定透明索引。延時(shí) - 如果不為0, 該字段指定以1/100秒為單位的時(shí)延數(shù)。透明索引 - 如果遇到透明索引,則顯示設(shè)備的相關(guān)象素不被改變,繼續(xù)處理下一個(gè)象素。塊終止符 - 這個(gè)0長度字段標(biāo)志著圖像控制擴(kuò)充得結(jié)束。 圖像描述符每一幅圖像必須在邏輯視屏描述

16、塊中所定義的邏輯視屏界限之內(nèi)。圖像描述符包含處理一個(gè)基于圖像的表的必要參數(shù)。在這個(gè)塊中給定的坐標(biāo)是參照邏輯視屏的像素坐標(biāo)。該塊是一個(gè)成象塊,在其前面可以選擇加上一個(gè)或多個(gè)控制塊,如:圖像控制擴(kuò)充,或者是后面接有局部色表;圖像描述符后面總是圖像數(shù)據(jù)。它是一幅圖所必需的。一幅圖像對應(yīng)一個(gè)圖像描述符。數(shù)據(jù)組成格式為:       圖象分隔符(1字節(jié))              圖象左坐標(biāo)(2字節(jié)) &#

17、160;     圖象頂坐標(biāo)(2字節(jié))              圖象寬度(2字節(jié))       圖象高度(2字節(jié))       (2字節(jié))       <Packed Fields>(1字節(jié))Packed Fields說明:局部色表標(biāo)志

18、 1 Bit隔行處理標(biāo)志 1 Bit短標(biāo)志 1 Bit保留 2 Bits局部色表尺寸 3 Bits解釋:圖像分隔符 - 用于識別圖像描述符的開始。取固定值0x2c 局部色表該塊包含一個(gè)按照紅-綠-蘭三原色的順序排列的色表。該表作用于緊跟其后的圖像數(shù)據(jù)。當(dāng)局不色表標(biāo)志位置1時(shí),該表出現(xiàn),且其后緊跟圖像的描述符,它所包含的字節(jié)數(shù)等于3*2(局部色表尺寸+1)數(shù)據(jù)組成格式為:              Red 0    &

19、#160;         Green 0              Blue 0                          

20、60; Red n              Green n              Blue n基于表的圖像數(shù)據(jù)基于表的圖像數(shù)據(jù)由一系列子塊組成,每個(gè)子塊最多255字節(jié),包含一個(gè)為圖中每個(gè)象素所指定的有效色表的索引。索引的順序用LZW算法進(jìn)行編碼。數(shù)據(jù)組成格式為:      

21、     LZW 最小編碼尺寸(1字節(jié))       圖象數(shù)據(jù)數(shù)據(jù)子塊(n字節(jié))解釋:LZW 最小編碼尺寸:該字節(jié)用于決定在圖像數(shù)據(jù)中用 LZW 編碼最初的位數(shù)。 注釋擴(kuò)充(版本-89a)注釋擴(kuò)充包含實(shí)際不屬于gif數(shù)據(jù)流的文本信息。它適用于包括圖像注釋、描述或者任何其他非控制和非圖像數(shù)據(jù)。注釋擴(kuò)充將被解碼器忽略,或者被保留到以后處理。在任何情況下注釋擴(kuò)充也不能中斷對數(shù)據(jù)流的處理。該塊是可選的;在數(shù)據(jù)流中的出現(xiàn)量不加限制。數(shù)據(jù)組成格式為:    

22、   擴(kuò)充導(dǎo)入符(1字節(jié))       注釋標(biāo)記(1字節(jié))       注釋數(shù)據(jù)數(shù)據(jù)子塊(n字節(jié))塊結(jié)束符(1字節(jié))解釋:擴(kuò)充導(dǎo)入符 - 標(biāo)識擴(kuò)充的開始。該字段為固定值0x21。注釋標(biāo)號 - 標(biāo)示某塊為注釋擴(kuò)充。該段為固定值0xFE。注釋數(shù)據(jù) - 按照子塊順序,每個(gè)注釋最少1字節(jié)最多255字節(jié)。序列結(jié)尾用塊結(jié)束符標(biāo)識。塊結(jié)束符 -用來標(biāo)識注釋擴(kuò)充的結(jié)束。 純文本擴(kuò)充(版本-89a)純文本擴(kuò)充包括純文本數(shù)據(jù)和將數(shù)據(jù)顯示為圖像所必需的參數(shù)。文本數(shù)據(jù)將用7位可印刷ASCII碼字符編碼。文本數(shù)據(jù)用在塊字段中定義的單元格字符元素來成象。每個(gè)字符用一個(gè)單元成象。該塊使用全局色表。它可以被圖形控制擴(kuò)充來修改。該塊為可選塊。數(shù)據(jù)組成格式為:       擴(kuò)充導(dǎo)入符(1字節(jié))       純文本標(biāo)記(1字節(jié))塊尺寸(1字節(jié))文本格左坐標(biāo)(2字節(jié))文本格頂坐標(biāo)(2字節(jié))文本格寬度(2字節(jié))文本格高度(2字節(jié))字符單元寬度(1字節(jié))字符單元寬度(1字節(jié))文本前景色索引(1字節(jié))文本背景色索引(1字節(jié)

溫馨提示

  • 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. 人人文庫網(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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論