簡介
圖形交換格式(其縮寫GIF)是由總部位於美國的軟體作家史蒂夫Wilhite於1987年在網際網路服務提供商CompuServe公司工作時開發的點陣圖圖像格式, 並且由於其廣泛的認可和可移植性已經在全球資訊網上廣泛使用。
該格式對每個圖像支持高達8位像素,允許單個圖像參考其自己的調色板,其中多達256種不同顏色可以從24位RGB顏色空間中選擇。它還支持動畫,並允許為每幀選擇最多256個顏色的單獨調色板。這些調色板限制使得GIF格式不太適合於再現具有連續顏色的彩色照片和其它圖像,但是它非常適合於較簡單的圖像,例如具有實心顏色區域的圖形或標誌。
使用Lempel-Ziv-Welch(LZW)無損數據壓縮技術壓縮GIF圖像以減小檔案大小而不降低視覺質量。這種壓縮技術在1985年被授予專利。1994年軟體專利持有人Unisys和CompuServe之間的許可協定的爭論推動了攜帶型網路圖形(PNG)標準的發展。到2004年,所有相關專利已過期。
歷史
CompuServe在1987年推出了GIF格式,為其檔案下載區域提供彩色圖像格式,取代了它們之前的運行長度編碼(RLE)。從那之後, GIF變得非常流行,因為它使用LZW數據壓縮,這比PCX和MacPaint等格式的編碼更有效,因此即使是非常慢的數據機,也可以在相當短的時間內下載相當大的圖像。
原始版本的GIF格式被稱為87a。1989年,CompuServe發布了一個增強版本,稱為89a,它增加了對動畫延遲,透明背景顏色和特定應用程式數據存儲的支持。 89a規範還支持將文本標籤作為文本,但由於對顯示字型的控制很少,所以該特徵不被廣泛使用。這兩個版本可以通過查看檔案的前六個位元組(“幻數”或“簽名”)來區分,當解釋為ASCII時,分別稱為“GIF87a”和“GIF89a”。
CompuServe鼓勵通過為計算機提供可下載的轉換實用程式來使用GIF。例如,到1987年12月,蘋果IIGS用戶可以查看在Atari ST或Commodore 64上創建的圖片。 GIF是網站上最常用的兩種圖像格式之一,另一種是黑白XBM。
用途
GIF適用於有限顏色的銳邊線條藝術(例如徽標)。 這利用了格式的無損壓縮,有利於均勻顏色和邊緣。
GIF可以用於存儲遊戲的低色彩數據。
GIF可以用於小動畫和低解析度電影剪輯。
GIF通常用作幽默效應的介質。 可以編輯,重新排列或組合一個或多個視頻用以創建荒謬的作品,以創建原始作品的創建者所想要的相反效果,或者強調和誇大細節。
檔案格式
在概念上,GIF檔案描述了填充有零個或多個“圖像”的固定大小的圖形區域(邏輯螢幕)。許多GIF檔案具有填充整個該區域的單個圖像。其他將該區域劃分為單獨的子圖像。圖像也可以用作動畫GIF檔案中的動畫幀,但是這些圖像也不需要填充整個區域。
GIF檔案從提供版本的固定長度頭(“GIF87a”或“GIF89a”)開始,隨後是固定長度的邏輯螢幕描述符,給出邏輯螢幕的大小和其他特徵。螢幕描述符還可以指定全局顏色表的存在和大小。
此後,檔案被分成段,每個段由1位元組的標誌引入:一個圖像(由0x2C引入,逗號“,”),一個擴展塊(由0x21引入,一個感嘆號'!')以及預告片(值為0x3B的單個位元組,分號';'),它應該是檔案的最後一個位元組。
圖像以固定長度的圖像描述符開始,該圖像描述符可以指定本地顏色表(如果存在的話,其在下面)的存在和大小。
擴展塊由指定擴展類型的附加位元組和具有擴展數據的子塊的連結列表組成。修改圖像的擴展塊(例如,指定可選動畫延遲時間和可選透明背景顏色的Graphic Control擴展)必須緊跟在段之前。
由圖像數據和擴展塊使用的連結列表由一系列子塊組成,每個子塊從給出子塊中的後續數據位元組數目的位元組開始(1到255)。一系列子塊由空子塊(0位元組)終止。
交錯
GIF規範允許GIF檔案的邏輯螢幕內的每個圖像是交錯的; 即,其數據塊中的柵格線的順序不是順序的。 這允許在繪製完整圖像之前可以識別的部分顯示的圖像。
隔行圖像從上到下分成8個像素高的條,並且圖像的行按以下順序呈現:
1:每個條帶的行0(最頂行)。
2:從每個條的線4。
3:從每個條帶的線2和6。
4:從每個條帶的行1,3,5和7。
每行內的像素不是隔行掃描的,而是從左到右連續呈現。圖像交織的指示符是在圖像的頭部塊中設定的位來決定。