GIF 是在 Web 上使用的主要圖像格式之一。
本文詳細(xì)講解了 GIF 圖像的特性和使用技巧。
GIF 是在 Web 上使用的主要圖像格式之一。
本文詳細(xì)講解了 GIF 圖像的特性和使用技巧。
無論是 HTML 還是 XHTML 都沒有規(guī)定圖像的官方格式。然而,流行的瀏覽器卻專門規(guī)定了一定的圖像格式:通常情況下是 GIF 和 JPEG。其他多媒體格式大多需要特殊的輔助應(yīng)用程序,每個瀏覽器的使用者都要去獲得、安裝并正確地操作這些應(yīng)用程序,這樣才能看到或聽到這些特殊的文件。所以,GIF 和 JPEG 成為在 Web 上的實際標(biāo)準(zhǔn)也就不令人覺得奇怪了。
在 Web 出現(xiàn)以前,這兩種圖像格式已經(jīng)得到了廣泛使用,所以有大量支持軟件可以幫助我們以這兩種格式創(chuàng)建圖像。然而,這兩種格式各自有其優(yōu)缺點,有些瀏覽器會利用其特性來實現(xiàn)特殊的顯示效果。
GIF 格式指的是圖像交換格式(Graphics Interchange Format,GIF),該格式最初是 CompuServe 為其在線服務(wù)用戶傳輸圖像而開發(fā)的。
GIF 格式有很多特性,因此在 HTML/XHTML 中十分普及。
首先,它的編碼技術(shù)在許多平臺上都可以使用。所以,通過適當(dāng)?shù)?GIF 解碼軟件(大多數(shù)瀏覽器都含有這種軟件),在 Macintosh 上創(chuàng)建并組成 GIF 文件的圖像,在基于 Windows 的 PC 上也可以毫不費力地加載、解碼并查看。
GIF 格式的第二個特性是,它采用了一種特殊的壓縮技術(shù),可以顯著減小圖像文件的大小,從而得以在網(wǎng)絡(luò)上更快地進行傳輸。而 GIF 壓縮是“無損”壓縮,也就是說,圖像中原來的數(shù)據(jù)都不會發(fā)生改變或丟失,所以解壓縮并解碼后的圖像與原來的圖像完全一樣。
此外,GIF 圖像還非常容易實現(xiàn)動畫效果。
盡管 GIF 圖像文件都用 .gif (或者 .GIF)作為文件名后綴,實際上卻有兩個 GIF 版本:原始的 GIF87 和 GIF89a,后者支持很多新特性,包括透明背景、交叉存儲和動畫等,這些特性在 Web 創(chuàng)作者中的使用十分普及。
現(xiàn)在流行的瀏覽器都支持這兩種 GIF 格式,它們都是通過同一種方案來把 8 位的像素值映射到一個顏色表當(dāng)中,這樣每個圖像最多可以有 256 種顏色。
大多數(shù) GIF 圖像實際顏色的數(shù)目更少,有些特殊工具(比如 Macromedia 的 Fireworks)可以在更為精細(xì)的圖像中簡化這些顏色。通過簡化顏色,可以創(chuàng)建更小的顏色映像并且強化像素冗余,來使文件壓縮得更多,從而使下載速度更快。
然而,由于顏色數(shù)目有限,用 GIF 編碼的圖像并不是任何時候都適用,尤其是對那些具有照片一樣逼真效果的圖片來說。GIF 可以用來創(chuàng)建非常好看的圖標(biāo)和顏色不多的圖像及圖畫。
因為大多數(shù)圖形瀏覽器都明確地支持 GIF 格式,因此它現(xiàn)在是 Web 上接受面最廣泛的圖像編碼格式。內(nèi)聯(lián)圖像和外部鏈接圖像都可以使用這種格式。如果你在選擇圖像格式方面猶豫不決,使用 GIF 肯定沒錯。它幾乎在所有情況下都可以正常使用。
GIF 圖像有三種特殊的技巧:隔行掃描(interlacing)、透明性(transparency)和動畫(animation)。
通過隔行掃描,GIF 圖像可以在屏幕上一下子顯現(xiàn)出來,而不是從上到下逐步地顯示。一般情況下,用 GIF 編碼的圖像是像素數(shù)據(jù)從圖像的頂部到底部順次、逐行排列的一個序列。所以,普通的 GIF 圖像在屏幕上顯示時,就好像一下子拉開窗簾,而具有隔行掃描的 GIF 在顯示時,則像卷起百葉窗一樣。這是因為像素數(shù)據(jù)的序列是每隔 4 行就交錯一次。用戶只需要用下載并顯示一整幅圖像的四分之一時間,就可以看到一個從上到下非常完整的圖像,雖然它很模糊。這個只完成了四分之一的圖像通常已經(jīng)足夠清楚了,這樣那些網(wǎng)絡(luò)連接速度較慢的用戶就能夠判斷出,是否有必要花時間下載圖像其余的部分。
盡管所有的圖形瀏覽器都能夠顯示隔行掃描 GIF,但并不是所有瀏覽器都可以顯示出隔行掃描那種逐漸清晰的效果。即使是那些可以實現(xiàn)這種效果的瀏覽器,用戶還可以通過選擇在圖像完全下載并解碼后再顯示,來抑制這種效果。老式瀏覽器總是當(dāng)圖像完全下載并解碼后才會顯示,所以根本不支持這種效果。
GIF 圖像(實際上是 GIF89a 格式的圖像)另外一種常見的效果,是它可以讓圖像的一部分變成透明效果,這樣圖像下面的內(nèi)容(通常是瀏覽器的窗口背景)就可以透過透明部分顯示出來。透明的 GIF 圖像在它的顏色映射里專門用一種顏色作為背景顏色,從而讓顯示窗口的背景透過來。通過仔細(xì)地剪切圖像的大小和選擇一種接近純色的背景顏色,透明圖像可以制作成看上去好像完全鑲嵌在網(wǎng)頁中,或者是浮動在上面的效果。
透明 GIF 圖像適合于任何希望融入文檔當(dāng)中但又不希望看上去是個方塊的圖形。透明的 GIF 徽標(biāo)十分常見,如透明圖標(biāo)或者印刷符號等 - 任何具有任意的自然形狀的圖像都可以使用這種效果。還可以在傳統(tǒng)文本中插入透明的內(nèi)聯(lián)圖像,以便在其中顯示特殊的字符符號。
GIF 圖像的透明效果有一個不好的地方,就是如果把它包含在超鏈接錨(<a>)標(biāo)簽里面而沒有去掉它的邊框,或者用框架專門將它括起來時,它看上去會十分糟糕。而且其他內(nèi)容會圍繞圖像的矩形邊框顯示,而不是靠近圖像的不透明邊框。這樣的結(jié)果就是不必要地把圖像隔離出來,或者使網(wǎng)頁看上去非常古怪。
GIF89a 格式圖像的第三個獨特之處是,它可以實現(xiàn)簡單的逐幀動畫。通過使用特殊的 GIF 動畫工具軟件,就可以把一系列 GIF 圖像放在一個單獨的 GIF89a 文件中。瀏覽器會相繼顯示文件中的每個圖像,就像我們小時候曾經(jīng)玩過的(甚至畫過的)那種通過快速翻頁產(chǎn)生動畫效果的小冊子。在 GIF 文件中,每個圖像之間都具有特殊的控制部分,可以用來設(shè)置瀏覽器從頭到尾顯示整個序列(循環(huán))的次數(shù),每兩個圖像之間停頓的時間,以及在瀏覽器顯示后面一個圖像之前是否從背景中抹去圖像空間,等等。通過把這些特性與那些 GIF 通常具有的特性(包括單獨的顏色表、透明性、隔行掃描等)結(jié)合起來,就可以創(chuàng)造出非常有吸引力而且非常精致的圖像。
簡單的 GIF 動畫之所以具有強大的效果,還有另外一個重要的原因:不需要特地為 HTML 文檔編寫程序就可以獲得動畫效果。但它也有一個非常大的毛病,那就是它局限在一些象圖標(biāo)大小般很小的圖形中,或者是只占據(jù)瀏覽器窗口中很窄一條的圖形當(dāng)中:即使你非常謹(jǐn)慎地沒有在連續(xù)的動畫單元中重復(fù)靜態(tài)部分,GIF 動畫也是非常容易變得很大。這樣,如果文檔中包含了多個動畫,那么下載這些圖像的拖延時間可能會令用戶非常反感。如果說有什么特性值得我們非常小心仔細(xì)地對待而不至于濫用的話,那就是 GIF 動畫。
GIF 的所有技巧 - 隔行掃描、透明性和動畫 - 都不是隨隨便便就可以獲得的,它們都需要特殊的軟件來準(zhǔn)備這些 GIF 文件。現(xiàn)在很多圖像軟件都可以把用戶創(chuàng)建的或者從外部獲得的圖像保存為 GIF 格式,而且大多數(shù)都支持透明效果,還可以實現(xiàn) GIF 文件的隔行掃描效果。還有非常多專門為這些需要而設(shè)計的大量共享軟件或免費軟件,包括實現(xiàn) GIF 動畫的軟件程序等。