青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆-4  評論-40  文章-117  trackbacks-0


1、概述 

       GIF(Graphics Interchange Format,圖形交換格式)文件是由 CompuServe公司開發的圖形文件格式,版權所有,任何商業目的使用均須 CompuServe公司授權。
  GIF圖象是基于顏色列表的(存儲的數據是該點的顏色對應于顏色列表的索引值),最多只支持8位(256色)。GIF文件內部分成許多存儲塊, 用來存儲多幅圖象或者是決定圖象表現行為的控制塊, 用以實現動畫和交互式應用。GIF文件還通過LZW壓縮算法壓縮圖象數據來減少圖象尺寸。

 

2、GIF文件存儲結構

  GIF文件內部是按塊劃分的,包括控制塊( Control Block )和數據塊(Data Sub-blocks)兩種。控制塊是控制數據塊行為的,根據不同的控制塊包含一些不同的控制參數; 數據塊只包含一些8-bit的字符流,由它前面的控制塊來決定它的功能,每個數據塊大小從0到255個字節, 數據塊的第一個字節指出這個數據塊大小(字節數), 計算數據塊的大小時不包括這個字節,所以一個空的數據塊有一個字節,那就是數據塊的大小0×00。 下表是一個數據塊的結構:m - 全局顏色列表標志(Global Color Table Flag),當置位時表示有全局顏色列表,pixel值有意義.
cr - 顏色深度(Color ResoluTion),cr+1確定圖象的顏色深度.
s - 分類標志(Sort Flag),如果置位表示全局顏色列表分類排列.
pixel - 全局顏色列表大小,pixel+1確定顏色列表的索引數(2的pixel+1次方).連續的和交織的(由圖象標識符的交織標志控制)。連續方式按從左到右、從上到下的順序排列圖象的光柵數據;交織圖象按下面的方法處理光柵數據:

BYTE 7 6 5 4 3 2 1 0 BIT
0 塊大小 Block Size - 塊大小,不包括這個這個字節(不計算塊大小自身)
1   Data Values - 塊數據,8-bit的字符串
2  
…  
254  
255  

  一個GIF文件的結構可分為文件頭(File Header)、GIF數據流(GIF Data Stream)和文件終結器(Trailer)三個部分。文件頭包含GIF文件署名(Signature)和版本號(Version);GIF數據流由控制標識符、圖象塊(Image Block)和其他的一些擴展塊組成;文件終結器只有一個值為0×3B的字符(”;”)表示文件結束。下表顯示了一個GIF文件的組成結構:

  GIF署名 文件頭  
  版本號
  邏輯屏幕標識符 GIF數據流  
  全局顏色列表  
  …  
  圖象標識符 圖象塊                              
  圖象局部顏色列表圖
                            基于顏色列表的圖象數據  
 
  …  
  GIF結尾 文件結尾  

  下面就具體介紹各個部分:

文件頭部分(Header)

GIF署名(Signature)和版本號(Version)

GIF署名用來確認一個文件是否是GIF格式的文件,這一部分由三個字符組成:”GIF”;文件版本號也是由三個字節組成,可以為”87a”或”89a”.具體描述見下表:

BYTE 7 6 5 4 3 2 1 0 BIT
1 ”G” GIF文件標識
2 ”I”
3 ”F”
4 ”8” GIF文件版本號:87a - 1987年5月
        89a - 1989年7月
5 ”7”或”9”
6 ”a”

GIF數據流部分(GIF Data Stream)

邏輯屏幕標識符(Logical Screen Descriptor)

這一部分由7個字節組成,定義了GIF圖象的大小(Logical Screen Width & Height)、顏色深度(Color Bits)、背景色(Blackground Color Index)以及有無全局顏色列表(Global Color Table)和顏色列表的索引數(Index Count),具體描述見下表:

BYTE 7 6 5 4 3 2 1 0 BIT  
1 邏輯屏幕寬度 像素數,定義GIF圖象的寬度
2
3 邏輯屏幕高度 像素數,定義GIF圖象的高度
4
5 m cr s pixel 具體描述見下…
6 背景色 背景顏色(在全局顏色列表中的索引,如果沒有全局顏色列表,該值沒有意義)
7 像素寬高比 像素寬高比(Pixel Aspect Radio)

 

全局顏色列表(Global Color Table)

全局顏色列表必須緊跟在邏輯屏幕標識符后面,每個顏色列表索引條目由三個字節組成,按R、G、B的順序排列。

BYTE 7 6 5 4 3 2 1 0 BIT
1 索引1的紅色值  
2 索引1的綠色值  
3 索引1的藍色值  
4 索引2的紅色值  
5 索引2的綠色值  
6 索引2的藍色值  
7 …                             

圖象標識符(Image Descriptor)
~~~~~~~~~~~~~~~~~~~~~~~~~
一個GIF文件內可以包含多幅圖象,一幅圖象結束之后緊接著下是一幅圖象的標識符,圖象標識符以0×2C(”,”)字符開始, 定義緊接著它的圖象的性質,包括圖象相對于邏輯屏幕邊界的偏移量、圖象大小以及有無局部顏色列表和顏色列表大小, 由10個字節組成:

BYTE 7 6 5 4 3 2 1 0 BIT  
1 0 0 1 0 1 1 0 0 圖象標識符開始,固定值為”,”
2 X方向偏移量 必須限定在邏輯屏幕尺寸范圍內
3
4 Y方向偏移量
5
6 圖象寬度
7
8 圖象高度
9
10 m i s r pixel m - 局部顏色列表標志(Local Color Table Flag)
              置位時標識緊接在圖象標識符之后有一個局部顏色列表,供緊跟在它之后的一幅圖象使用;值否時使用全局顏色列表, 忽略pixel值。
i - 交織標志(Interlace Flag),置位時圖象數據使用交織方式排列 (詳細描述…),否則使用順序排列。
s - 分類標志(Sort Flag),如果置位表示緊跟著的局部顏色列表分類排列.
r - 保留,必須初始化為0.
pixel - 局部顏色列表大小(Size of Local Color Table),pixel+1就為顏色列表的位數

局部顏色列表(Local Color Table)

如果上面的局部顏色列表標志置位的話,則需要在這里(緊跟在圖象標識符之后)定義一個局部顏色列表以供緊接著它的圖象使用,注 意使用前應線保存原來的顏色列表,使用結束之后回復原來保存的全局顏色列表。如果一個GIF文件即沒有提供全局顏色列表,也沒有提供局部顏色列表, 可以自己創建一個顏色列表,或使用系統的顏色列表。局部顏色列表的排列方式和全局顏色列表一樣:RGBRGB……

基于顏色列表的圖象數據(Table-Based Image Data)

由兩部分組成:LZW編碼長度(LZW Minimum Code Size)和圖象數據(Image Data)。

BYTE 7 6 5 4 3 2 1 0 BIT
1 LZW編碼長度 LZW編碼初始碼表大小的位數,詳細描述見LZW編碼…
   … 圖象數據,由一個或幾個數據塊(Data Sub-blocks)組成
數據塊

GIF圖象數據使用了LZW壓縮算法(詳細介紹請看后面的『LZW算法和GIF數據壓縮』),大大減小了圖象數據的大小。圖象數據在壓縮前有兩種排列格式:

創建四個通道(pass)保存數據,每個通道提取不同行的數據:
第一通道(Pass 1)提取從第0行開始每隔8行的數據;
第二通道(Pass 2)提取從第4行開始每隔8行的數據;
第三通道(Pass 3)提取從第2行開始每隔4行的數據;
第四通道(Pass 4)提取從第1行開始每隔2行的數據;

下面的例子演示了提取交織圖象數據的順序:

行  通道1   通道2   通道3   通道4   
0  ——————————————————– 1        
1 ——————————————————–       4  
2  ——————————————————–     3    
3  ——————————————————–       4  
4  ——————————————————–   2      
5  ——————————————————–       4  
6  ——————————————————–     3    
7  ——————————————————–       4  
8  ——————————————————– 1        
9  ——————————————————–       4  
10 ——————————————————–     3    
11 ——————————————————–       4  
12 ——————————————————–   2      
13 ——————————————————–       4  
14 ——————————————————–     3    
15 ——————————————————–       4  
16 ——————————————————– 1        
17 ——————————————————–       4  
18 ——————————————————–     3    
19 ——————————————————–       4  
20 ——————————————————–   2      

 

圖形控制擴展(Graphic Control Extension)

這一部分是可選的(需要89a版本),可以放在一個圖象塊(圖象標識符)或文本擴展塊的前面, 用來控制跟在它后面的第一個圖象(或文本)的渲染(Render)形式,組成結構如下:

BYTE 7 6 5 4 3 2 1 0 BIT
1 擴展塊標識 Extension Introducer - 標識這是一個擴展塊,固定值0×21
2 圖形控制擴展標簽 Graphic Control Label - 標識這是一個圖形控制擴展塊,固定值0xF9
3 塊大小 Block Size - 不包括塊終結器,固定值4
4 保留 處置方法 i t i - 用戶輸入標志;t - 透明色標志。
5 延遲時間 Delay Time - 單位1/100秒,如果值不為1,表示暫停規定的時間后再繼續往下處理數據流
6
7 透明色索引 Transparent Color Index - 透明色索引值
8 塊終結器 Block Terminator - 標識塊終結,固定值0

(Disposal Method):指出處置圖形的方法,當值為:
                        0 - 不使用處置方法
                        1 - 不處置圖形,把圖形從當前位置移去
                        2 - 回復到背景色
                        3 - 回復到先前狀態
                      4-7 - 自定義
用戶輸入標志(Use Input Flag):指出是否期待用戶有輸入之后才繼續進行下去,置位表示期待,值否表示不期待。用戶輸入可以是按回車鍵、鼠標點擊等, 可以和延遲時間一起使用,在設置的延遲時間內用戶有輸入則馬上繼續進行,或者沒有輸入直到延遲時間到達而繼續
透明顏色標志(Transparent Color Flag):置位表示使用透明顏色

注釋擴展(Comment Extension)

這一部分是可選的(需要89a版本),可以用來記錄圖形、版權、描述等任何的非圖形和控制的純文本數據(7-bit ASCII字符),注釋擴展并不影響對圖象數據流的處理,解碼器完全可以忽略它。 存放位置可以是數據流的任何地方,最好不要妨礙控制和數據塊,推薦放在數據流的開始或結尾。具體組成:

BYTE 7 6 5 4 3 2 1 0 BIT
1 擴展塊標識 Extension Introducer - 標識這是一個擴展塊,固定值0×21
2 注釋塊標簽 Comment Label - 標識這是一個注釋塊,固定值0xFE
  … Comment Data - 一個或多個數據塊(Data Sub-Blocks)組成
注釋塊

  塊終結器 Block Terminator - 標識注釋塊結束,固定值0

圖形文本擴展(Plain Text Extension)

這一部分是可選的(需要89a版本),用來繪制一個簡單的文本圖象,這一部分由用來繪制的純文本數據(7-bit ASCII字符)和控制繪制的參數等組成。繪制文本借助于一個文本框(Text Grid)來定義邊界,在文本框中劃分多個單元格,每個字符占用一個單元,繪制時按從左到右、從上到下的順序依次進行, 直到最后一個字符或者占滿整個文本框(之后的字符將被忽略,因此定義文本框的大小時應該注意到是否可以容納整個文本), 繪制文本的顏色索引使用全局顏色列表,沒有則可以使用一個已經保存的前一個顏色列表。另外,圖形文本擴展塊也屬于圖形塊(Graphic Rendering Block),可以在它前面定義圖形控制擴展對它的表現形式進一步修改。圖形文本擴展的組成:

BYTE 7 6 5 4 3 2 1 0 BIT
1 擴展塊標識 Extension Introducer - 標識這是一個擴展塊,固定值0×21
2 圖形控制擴展標簽 Plain Text Label - 標識這是一個圖形文本擴展塊,固定值0×01
3 塊大小 Block Size - 塊大小,固定值12
4 文本框左邊界位置 Text Glid Left Posotion - 像素值,文本框離邏輯屏幕的左邊界距離
5
6 文本框上邊界位置 Text Glid Top Posotion - 像素值,文本框離邏輯屏幕的上邊界距離
7
8 文本框高度 Text Glid Width -像素值
9
10 文本框高度 Text Glid Height - 像素值
11
12 字符單元格寬度 Character Cell Width - 像素值,單個單元格寬度
13 字符單元格高度 Character Cell Height- 像素值,單個單元格高度
14 文本前景色索引 Text Foreground Color Index - 前景色在全局顏色列表中的索引
15 文本背景色索引 Text Blackground Color Index - 背景色在全局顏色列表中的索引
N … Plain Text Data - 一個或多個數據塊(Data Sub-Blocks)組成,保存要在顯示的字符串。
文本數據塊

N+1 塊終結 Block Terminator - 標識注釋塊結束,固定值0

推薦:1.由于文本的字體(Font)和尺寸(Size)沒有定義,解碼器應該根據情況選擇最合適的;
2.如果一個字符的值小于0×20或大于0xF7,則這個字符被推薦顯示為一個空格(0×20);
3.為了兼容性,最好定義字符單元格的大小為8×8或8×16(寬度x高度)。

應用程序擴展(Application Extension)

這是提供給應用程序自己使用的(需要89a版本),應用程序可以在這里定義自己的標識、信息等,組成:

BYTE 7 6 5 4 3 2 1 0 BIT
1 擴展塊標識 Extension Introducer - 標識這是一個擴展塊,固定值0×21
2 圖形控制擴展標簽 Application Extension Label - 標識這是一個應用程序擴展塊,固定值0xFF
3 塊大小 Block Size - 塊大小,固定值11
4 應用程序標識符 Application Identifier - 用來鑒別應用程序自身的標識(8個連續ASCII字符)
5
6
7
8
9
10
11
12 應用程序鑒別碼 Application Authentication Code - 應用程序定義的特殊標識碼(3個連續ASCII字符)
13
14
N … 應用程序自定義數據塊 - 一個或多個數據塊(Data Sub-Blocks)組成,保存應用程序自己定義的數據
應用程序數據

N+1 塊終結器 lock Terminator - 標識注釋塊結束,固定值0

文件結尾部分

文件終結器(Trailer)

這一部分只有一個值為0的字節,標識一個GIF文件結束.

BYTE 7 6 5 4 3 2 1 0  
1 文件終結 GIF Trailer - 標識GIF文件結束,固定值0×3B

 

GIF圖象文件格式  
    GIF的全稱是Graphics   Interchange   Format,.譯做圖形交換格式。GIF是一種公用的圖象文件格式標準,但它歸compuServe公司版權所有。  
  GIF文件結構包含一個文件頭,  在一個GIF文件中首先碰到的是GIF的標志,這個標志告訴解碼程序這是個GIF文件。這個標志是3字節的串:GIF。一個GIF文件中可以存放多幅圖象,但絕大多數的文件都只包含一幅圖象。  
    然后是屏幕描述字(screen   descriptor),說明了用來生成的顯示文件中的圖象的顯示器分辨率,分別表示屏幕的寬和高。  
    緊跟下來的一個字節是全局標志,其低三位說明了即將碰到的圖象是多少顏色的。最高位表示是否存在一個全局色彩表。  
    背景色表示把背景置成適當的顏色,實際上是一個指向全局色彩表的數。  
    Struct   Global_Data{  
      Unsigned   short   screen_width;  
      Unsigned   short   screen_height;  
      Unsigned   char   background;  
      har   tail='\0';  
      }  
    接下來是全局色彩表,按順序存放所有的嚴肅,每一種嚴肅由色彩表的一項來描述,每項是3字節,分別表示紅、綠、藍三種原色的強度。其長度有全局標志的低三位表示。  
    以后的數據都是局部的了。是些數據塊的集合。下面是圖象數據塊的結構。  
    Struct   Local_Head{  
        Char   heading=',';  
        Unsigned   short   image_left;//圖象的屏幕上顯示的起始位置  
      Unsigned   short   image_top;  
      Unsigned   short   image_width;  
      Unsigned   short   image-height;  
      Unsigned   char   local_flag;//局部標志  
      }    
   
    局部標志和   全局標志的不同之處在于次高位,如果這位被置成1則表示圖像的位圖數據是以隔行方式存放的。也就是說,在解開的位圖數據中,第一行存放的是屏幕上第一行,第二行對應屏幕上的第9行,第三行對應屏幕上的第17行,以此遞增--這是第一遍掃描;第二遍掃描是從屏幕上的第5行開始,兩行之間也是以8遞增;第三遍掃描是從屏幕上的第3行開始,兩行之間以4遞增;第四遍掃描,也是最后一遍,從第2行開始,兩行之間以2遞增。隔行存放的圖像數據和順序(不隔行)存放的圖像數據的對應關系如下圖所示:  
        
   
    隔行存放的GIF圖像在邊解碼邊顯示的時候可分成四遍掃描。第一遍掃描雖然只顯示了整個圖像的八分之一,第二遍的掃描后也只顯示了四分之一,但這已經把整個圖像的概貌顯示出來了。在顯示GIF圖像的時,隔行存放的圖像會給你這樣一個印象:向它的顯示速度似乎要比其他圖像快一些,這是隔行存放的優點。  
    在GIF圖像的編解碼中用到了LZW壓縮算法--把這些字符流轉換成另一種形式的代碼流,解碼過程則是把這種代碼流還原成原來的字符流。  


本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/friendwaters/archive/2008/07/30/2737328.aspx

posted on 2009-10-30 17:41 李陽 閱讀(505) 評論(0)  編輯 收藏 引用 所屬分類: 圖形圖像
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美本精品男人aⅴ天堂| 亚洲一级影院| 欧美成人一品| 欧美国产日韩在线| 欧美日韩不卡在线| 欧美日韩午夜精品| 欧美精品久久一区二区| 91久久亚洲| 亚洲精品国产精品乱码不99| 一区二区三区日韩在线观看| 一区电影在线观看| 亚洲视频综合| 欧美在线视频二区| 欧美高清视频在线播放| 亚洲乱码国产乱码精品精98午夜 | 一区在线观看| 亚洲欧洲精品成人久久奇米网 | 欧美日韩黄色大片| 国产精品久久久久国产a级| 国产精品一卡| 亚洲第一视频| 一区二区三区国产在线观看| 欧美一区日韩一区| 亚洲国产二区| 亚洲欧美国产不卡| 欧美1区视频| 国产精品美女久久久| 在线播放精品| 亚洲欧美日韩天堂| 亚洲大片av| 欧美亚洲在线观看| 欧美日产一区二区三区在线观看| 国产欧美一区二区精品婷婷| 亚洲激情一区二区三区| 欧美一区二区三区免费视| 亚洲国产一区二区三区青草影视| 一本久久综合| 老司机免费视频久久| 国产精品久久久久久一区二区三区 | 欧美国产一区二区| 国产专区欧美专区| 亚洲欧美经典视频| 亚洲国产日本| 久久亚洲综合| 国内外成人免费激情在线视频 | 在线精品高清中文字幕| 西西人体一区二区| 亚洲精品日韩在线观看| 久久久久国产免费免费| 国产精品欧美在线| 中文在线资源观看网站视频免费不卡| 蜜桃精品久久久久久久免费影院| 亚洲欧美日韩国产中文| 国产精品久久久一区二区| 久久久精品国产一区二区三区| 亚洲激情在线激情| 久久黄色级2电影| 国产日产高清欧美一区二区三区| 99riav国产精品| 亚洲第一主播视频| 久久婷婷蜜乳一本欲蜜臀| 国产在线精品二区| 久久精品女人的天堂av| 亚洲欧美偷拍卡通变态| 国产精品毛片a∨一区二区三区|国| 亚洲免费av网站| 亚洲国产精品电影在线观看| 美国成人直播| 91久久国产综合久久91精品网站| 欧美www视频| 老牛影视一区二区三区| 亚洲日本欧美| 91久久嫩草影院一区二区| 欧美精品乱人伦久久久久久| 中日韩视频在线观看| 亚洲欧洲另类| 国产精品h在线观看| 亚洲欧美国产视频| 亚洲欧美春色| 极品av少妇一区二区| 免费观看一区| 男女av一区三区二区色多| 99视频+国产日韩欧美| 亚洲卡通欧美制服中文| 国产精品久久久久久超碰| 午夜精品久久久久99热蜜桃导演| 午夜欧美精品久久久久久久| 极品尤物久久久av免费看| 欧美肥婆bbw| 欧美日本韩国一区| 欧美在线免费观看| 麻豆av一区二区三区| 99精品99| 欧美一二三区在线观看| 亚洲啪啪91| 亚洲女女女同性video| 亚洲激情社区| 一区二区三区精品在线| 国产精品女同互慰在线看| 久久夜色精品| 欧美午夜激情小视频| 久久久国产午夜精品| 欧美激情综合网| 欧美国产激情| 一区二区三区三区在线| 久久精品国产精品亚洲精品| 中文日韩电影网站| 久久久久久网址| 亚洲影院免费观看| 久久蜜臀精品av| 午夜精品视频网站| 欧美.www| 久久免费高清| 国产精品美女一区二区在线观看| 免费看的黄色欧美网站| 国产精品毛片一区二区三区| 欧美视频1区| 嫩草成人www欧美| 久久久精品网| 亚洲日本中文字幕区| 午夜精品亚洲一区二区三区嫩草| 国产免费观看久久| 日韩视频在线免费观看| 国产精品福利影院| 欧美va亚洲va国产综合| 国产精品美女一区二区在线观看| 免费在线观看日韩欧美| 国产精品亚洲视频| 亚洲精品久久久久久久久久久久久 | 久久久久九九视频| 欧美精品在线播放| 欧美大片一区| 一区二区在线观看视频| 亚洲图片在线| 亚洲视频一二| 欧美xx视频| 欧美黄网免费在线观看| 激情婷婷欧美| 久久精品亚洲国产奇米99| 亚洲私人影院在线观看| 蜜桃精品一区二区三区| 欧美电影在线| 亚洲精品一区二区在线观看| 午夜激情一区| 久久精品中文字幕一区| 国产精品尤物| 篠田优中文在线播放第一区| 亚洲一区二区三区色| 欧美另类99xxxxx| 亚洲精品美女久久7777777| 亚洲欧洲视频在线| 欧美国产视频日韩| 99国产精品久久久久久久成人热| 亚洲精品久久久久久下一站| 欧美成人综合| 日韩亚洲视频在线| 中文在线资源观看网站视频免费不卡| 欧美日韩 国产精品| 亚洲香蕉在线观看| 欧美专区日韩专区| 一区二区三区我不卡| 欧美韩日一区| 亚洲免费成人av电影| 亚洲欧美日韩国产中文在线| 国产日本欧美在线观看| 久久久久久久999| 欧美国产综合一区二区| 亚洲视频观看| 国产亚洲免费的视频看| 久久久久久亚洲精品不卡4k岛国| 欧美gay视频| 夜夜嗨av一区二区三区四季av| 欧美日韩亚洲一区二区| 午夜精品理论片| 亚洲精品国产系列| 国产亚洲人成a一在线v站| 欧美一区二区三区四区在线观看| 美女网站久久| 亚洲午夜羞羞片| 在线观看成人av| 欧美日韩在线免费视频| 欧美一区高清| 日韩视频在线观看免费| 久久精品毛片| 亚洲视频一区在线| 影音先锋久久资源网| 欧美日韩国产在线看| 久久免费高清视频| 在线亚洲一区观看| 亚洲第一页自拍| 久久久久久久久综合| 亚洲网址在线| 亚洲欧洲精品一区二区三区 | 亚洲一品av免费观看| 男女av一区三区二区色多| 亚洲在线视频观看| 日韩视频专区| 91久久线看在观草草青青| 国产一区二区三区日韩欧美| 国产精品成人一区|