GIF

位图图像文件格式的家族

圖像互換格式(英語:Graphics Interchange Format,簡稱GIF)是一種點陣圖圖形檔案格式,以8位元色(即256種顏色)重現真彩色的圖像。由美國電腦科學家Steve Wilhite領導的線上服務供應商CompuServe團隊開發,並於1987年6月15日發佈。

GIF
一個顯示地球自轉的GIF動畫
副檔名
.gif
網路媒體型式
image/gif
類型代碼英語Type code
GIFf
統一類型標識com.compuserve.gif
開發者CompuServe
首次發佈1987年,​37年前​(1987[1]
最新版本
89a
1989年,​35年前​(1989[2]
格式類型點陣圖圖像格式
網站www.w3.org/Graphics/GIF/spec-gif89a.txt

它實際上是一種壓縮文件,採用LZW壓縮演算法進行編碼,有效地減少了圖檔在網絡上載輸的時間。它是目前萬維網廣泛應用的網絡傳輸圖像格式之一。史蒂芬·威爾海特(Stephen Wilhite)在Compuserve公司工作時,率領工程團隊發明GIF檔,憑着體積小、成像相對清晰的優點,十分適合早期互聯網頻寬小的環境,而今網絡用戶將GIF檔用於創作,變成用來作為網絡迷因的格式之一,威爾海特也在2013年獲得威比獎(The Webby Award)終身成就獎。至於「GIF」怎麼唸,許多人都唸成「gift」([ɡɪf])的音,但他本人正名應該唸「Jif」([d͡ʒɪf])一樣的音。

歷史

編輯

GIF格式自1987年由CompuServe公司引入後,因其體積小而成像相對清晰,特別適合於初期慢速的互聯網,而從此大受歡迎。它採用無損壓縮技術,只要圖像不多於256色,則可既減少檔案的大小,又保持成像的質素。(當然,現在也存在一些hack技術,在一定的條件下克服256色的限制)然而,256色的限制大大局限了GIF檔案的應用範圍,如彩色相機等。(當然採用無損壓縮技術的彩色相機相片亦不適合通過網絡傳輸。)另一方面,在高彩圖片上有着不俗表現的JPEG格式卻在簡單的折線上效果不如人意。因此GIF格式普遍適用於圖表,按鈕等等只需少量顏色的圖像(如黑白相片)。

GIF格式的原始版本叫做87a。1989年,CompuServe發佈了一個名為89a的增強版本,在這個版本中,為GIF文件擴充了圖形控制區塊、備註、說明、應用程式介面等四個區塊,並提供了對透明色和多幀動畫的支援。現在我們一般所說的GIF動畫都是指89a的格式[3]Netscape於1990年提出了Netscape Application Block,定義了一個動畫應該循環多少次或是否應該無限次地播放,這導致了GIF動畫的流行[4][5]。重複迴圈的功能首次實作在Netscape Navigator 2.0版本,然後逐漸受到其他瀏覽器支援,儘管現代大多數瀏覽器都已支援,但是嚴謹來說不是89a規範的一部分[6]

2015年5月,Facebook開始支援GIF。[7][8]

專利

編輯

在早期,GIF所用的LZW壓縮演算法是CompuServe所開發的一種免費演算法。然而令很多軟件開發商感到意外的是,GIF檔案所採用的壓縮演算法忽然成了Unisys公司的專利。據Unisys公司稱,他們已註冊了LZW中的W部分。如果要開發生成(或顯示)GIF檔案的程式,則需向該公司支付版稅。在專利失效前曾引起部份開放原始碼社群發起「Burn all GIFs」的運動抵制使用GIF格式。因此,人們開始尋求一種新技術,以減少開發成本。它一方面滿足了市場對更少的法規限制的需要,另一方面也帶來了更少的技術上的限制,如顏色的數量等。

在2003年6月20日,LZW演算法在美國的專利權已到期而失效。在歐洲日本加拿大的專利權亦已分別在2004年的6月18日、6月20日和7月7日到期失效。與GIF相關的專利於2006年8月11日過期。儘管如此,PNG檔案格式憑着其技術上的優勢,已然躋身於網絡上第三廣泛應用格式[9]

特性

編輯
 
做了減色的圖像樣品
  • 優秀的壓縮演算法使其在一定程度上保證圖像質素的同時將體積變得很小。
  • 可插入多幀,從而實現動畫效果。
  • 可設置透明色以產生對象浮現於背景之上的效果。
  • 由於採用了8位元壓縮,最多只能處理256種顏色,故不宜應用於真彩色圖片。

技術簡介

編輯

GIF主要是為數據流而設計的一種傳輸格式,而不是作為檔案的儲存格式。它具有順序組織形式而不是隨機組織形式。

GIF有五個主要部分以固定順序出現,所有部分均由一個或多個區塊(block)組成。每個塊由第一個位元組中的標識碼或特徵碼標識。這些部分的順序為:頭塊、邏輯螢幕描述塊、可選的「全域」色彩表塊(調色盤)、各圖像數據塊(或專用的塊)以及尾塊(結束碼)。下面是這些部分的內容:

  • 起頭為一個區塊,它辨識數據流為GIF,並指示如何解釋後面的數據所需的最早版本的GIF解碼程式(87a或89a)。
  • 邏輯程式描述塊定義了:所有後面圖像的圖像平面的大小、縱橫尺寸比以及色彩深度(它類似於產生圖像的監視器螢幕)。它還指明後面跟隨的是否為「全域」色彩表。
  • 全域色彩表(如果存在)構成一個24位元RGB元組的調色盤(每種底色為一個位元組)。如果後面的像沒有其自己的「局部」調色盤,那麼全域色表就是預設調色盤。
  • 後續數據作為「圖形」或「專用」塊出現。圖形塊典型地包含一個或多個點陣圖圖像,也可能是覆蓋的文字。專用塊或者包含一個專用應用程式碼,或者包含一句不可列印的註釋。
  • 最後的尾塊指示值為3B(十六進制)的一個位元組,表示數據流已結束。

注意:檔案中的GIF數據流可能不包含任何點陣圖數據,這時,它只是要傳輸全域色彩表,作為沒有自己調色盤的後續數據流的預設調色盤。

參考文獻

編輯
  1. ^ Graphics Interchange Format, Version 87a. W3C. 15 June 1987 [13 October 2012]. (原始內容存檔於2018-12-25). 
  2. ^ Graphics Interchange Format, Version 89a. W3C. 31 July 1990 [6 March 2009]. (原始內容存檔於2018-12-25). 
  3. ^ 動畫的原理. [2016-04-05]. (原始內容存檔於2016-04-17). 
  4. ^ Royal Frazier. All About GIF89a. [7 January 2013]. (原始內容存檔於1999-04-18).  |url-status=|dead-url=只需其一 (幫助)
  5. ^ The GIF Turns 30: How an Ancient Format Changed the Internet. 2017-05 [2020-01-04]. (原始內容存檔於2020-02-25). 
  6. ^ Scott Walter. Web Scripting Secret Weapons. Que Publishing. 1996. ISBN 0-7897-0947-3. 
  7. ^ McHugh, Molly. You Can Finally, Actually, Really, Truly Post GIFs on Facebook. wired.com. 2015-05-29 [2015-05-29]. (原始內容存檔於2015-05-30). 
  8. ^ Perez, Sarah. Facebook Confirms It Will Officially Support GIFs. techcrunch.com. 2015-05-29 [2015-05-29]. (原始內容存檔於2015-05-30). 
  9. ^ Why There Are No GIF Files on GNU Web Pages. [2006-07-20]. (原始內容存檔於2006-07-20). 

外部連結

編輯