gif有哪幾種形式
gif有哪幾種形式
GIF文件的數(shù)據(jù),是一種基于LZW算法的連續(xù)色調(diào)的無損壓縮格式,那么你對GIF了解多少呢?下面就讓學(xué)習啦小編來給你科普一下什么是gif。
gif的歷史
在早期,GIF所用的LZW壓縮算法是Compuserv所開發(fā)的一種免費算法。然而令很多軟件開發(fā)商感到意外的是,GIF文件所采用的壓縮算法忽然成了Unisys公司的專利。據(jù)Unisys公司稱,他們已注冊了LZW算法中的W部分。如果要開發(fā)生成(或顯示)GIF文件的程序,則需向該公司支付版稅。由此,人們開始尋求一種新技術(shù),以減少開發(fā)成本。PNG(Portable Network Graphics,便攜網(wǎng)絡(luò)圖形)標準就在這個背景下應(yīng)運而生了。它一方面滿足了市場對更少的法規(guī)限制的需要,另一方面也帶來了更少的技術(shù)上的限制,如顏色的數(shù)量等。
在2003年6月20日,LZW算法在美國的專利權(quán)已到期而失效。在歐洲、日本及加拿大的專利權(quán)亦已分別在2004年的6月18日、6月20日和7月7日到期失效。盡管如此,PNG文件格式憑著其技術(shù)上的優(yōu)勢,已然躋身于網(wǎng)絡(luò)上第三廣泛應(yīng)用格式。與GIF相關(guān)的專利于2006年8月11日過期。
gif的分類
GIF分為靜態(tài)GIF和動畫GIF兩種,擴展名為.gif,是一種壓縮位圖格式,支持透明背景圖像,適用于多種操作系統(tǒng),“體型”很小,網(wǎng)上很多小動畫都是GIF格式。其實GIF是將多幅圖像保存為一個圖像文件,從而形成動畫,最常見的就是通過一幀幀的動畫串聯(lián)起來的搞笑gif圖,所以歸根到底GIF仍然是圖片文件格式。但GIF只能顯示256色。和jpg格式一樣,這是一種在網(wǎng)絡(luò)上非常流行的圖形文件格式。
GIF主要分為兩個版本,即GIF 89a和GIF 87a
GIF 87a:是在1987年制定的版本
GIF 89a:是1989年制定的版本。在這個版本中,為GIF文檔擴充了圖形控制區(qū)塊、備注、說明、應(yīng)用程序編程接口等四個區(qū)塊,并提供了對透明色和多幀動畫的支持
gif的語法格式
語法是用來表達序列的一種符號形式,并用這個表達序列中的一些對象來形成更大的對象。語法也用于表達在給定的位置出現(xiàn)對象的數(shù)目。在此給出的語法用來說明形成gif數(shù)據(jù)流的塊序列,用一些規(guī)則列表來表達。下面列出用于gif語法的符號定義。
圖例: <> 語法詞
::= 符號定義
* 0個或更多的事件發(fā)生
+ 1個或更多的事件發(fā)生
| 替代元素
[] 可選元素
gif語法的符號定義:
<GIF數(shù)據(jù)流> ::= 頭部 <;邏輯視屏> <;數(shù)據(jù)>* 尾記錄
這個規(guī)則將<Gif 數(shù)據(jù)流>;實體定義如下。它必須以頭部開始,頭部后面接一個邏輯視屏實體,該實體要用其他規(guī)則來定義。最后,數(shù)據(jù)實體接結(jié)束符。數(shù)據(jù)實體后面的*表示數(shù)據(jù)實體可以在此位置出現(xiàn)0或多次。
<Gif 數(shù)據(jù)流> ::= 頭部 <;邏輯視屏> <;數(shù)據(jù)>* 尾記錄
<;邏輯視屏> ::= 邏輯視屏描述塊 [全局色表]
<;數(shù)據(jù)> ::= <;成象塊> |<;特殊用途塊>
<;成象塊> ::= [圖象控制擴充] <;成象塊>
<;成象塊> ::= <;基于表的圖象> |純文本擴充
<;基于表的圖象> ::= 圖象描述符 [局部色表] 圖象數(shù)據(jù)
<;特殊用途塊> ::= 應(yīng)用擴充 |注釋擴充
gif數(shù)據(jù)流中的數(shù)據(jù)塊可以分為三組:控制塊、成象塊和特殊用途塊。
控制塊,如:頭部、邏輯視屏描述塊、圖像控制擴充和尾記錄,包含用于控制處理數(shù)據(jù)流或設(shè)置硬件參數(shù)的信息。
成像塊,如:圖像描述符和純文本擴充,包含用于在顯示設(shè)備上成像的信息和數(shù)據(jù)。
特殊用途塊,如:注釋擴充和應(yīng)用擴充,包含那些既不用于處理數(shù)據(jù)流也不用于在顯示設(shè)備上成象的信息。
除了邏輯視屏描述塊和全局色表之外,特殊用途塊的作用域是整個數(shù)據(jù)流,而其他控制塊的作用域是有限的,僅限于對他們后面的成象塊起作用。特殊用途塊不對任何控制塊構(gòu)成限制,它對于解碼過程來說是透明的。成象塊及擴充用于控制塊及擴充的作用域限定。塊的標記分為三段:除尾記錄0x3b之外,0x00~0x7f用于成象塊;0x80~0xf9用于控制塊;0xfa~0xff用于特殊用途塊。解碼器通過識別塊標記來處理塊的作用域。
看過“gif有哪幾種”的人還看了: