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