為什麼 GIF 格式遲遲沒有被取代?

GIF 是20多年前的東西,無論是清晰度還是色彩還原都不適應現在的互聯網環境,但是為什麼一直沒有消亡?
推出一種新的圖片格式需要克服哪些阻礙?


Mozilla 社區推崇帶有動畫的APNGAnimated Portable Network Graphics),所以Firefox 3 開始支持該格式,開發者也一直推薦該格式作為PNG標準的一部分,但最終PNG組織投票以10:8否決了APNG進入官方標準,這事兒也就不了了之啦。

Chrome 則推崇自己的 WebP 格式,Animated WebP(WebM) 則是可以支持動畫的 WebP,它包括了真正的(8bit)alpha通道,每一幀還可以按照需要設置成有損或無損,而Gif 只有1bit,相比Gif文件體積可以壓縮的更小。在最新的 Chrome 32 for Android 中進一步優化了性能,默認禁用了雙擊縮放等。Chrome 9 開始支持該格式。

Opera 是個老好人,從 9.5-12.1 開始支持APNG,從11.1+開始支持 WebP,轉投 Blink 內核後,自然是和 Chrome 保持一致了。

所以 Gif 遲遲沒有被新的格式取代也是各個社區對各自利益相持的結果,最終還是會被逐步取代。

這裡有一個在線轉換 Gif 為 WebP 動畫格式的網站:Convert images to WebP

對比兩者,WebP 減少了約26.28%的大小。

GIF
http://ww2.sinaimg.cn/mw1024/c1608aa0gw1ea377vdngvg20bo0byhdt.gif

WebP
http://gtms01.alicdn.com/tps/i1/T1EXtgXy4eXXX_WqbX.webp

2015-06-15 更新:
iOS 8.1 開始已經支持 APNG 格式了,簡直鵝妹子硬!

微軟在全新的 Edge 瀏覽器上開放了很多,但對 APNG 這事,仍然是保守態度。從 Edge 的推特回復來看,目前並不打算支持該格式。難道還是要搞一個自己的動畫格式?https://twitter.com/MSEdgeDev/status/596197829414035456

此外,還有 Multiple-image Network GraphicsMNG)——多幀PNG動畫圖形格式,功能類似GIF。但是目前多數主流瀏覽器均不直接支持MNG。

測試頁面:GIF vs APNG vs WebP

2015年08月04日 更新:

Chrome 準備開始支持 APNG 啦 https://code.google.com/p/chromium/issues/detail?id=437662


看了幾個回答感覺都沒有說到位,擴充一下深表同意的匿名用戶的回答吧。

首先切題:事實上,GIF,準確地說動態GIF正在被取代。國外的主流社交網站,如reddit、instagram已經逐漸普及webm之類的視頻來替代GIF動圖。在英文圈被使用最多的圖床,imgur,迫於gyfcat的競爭壓力也開始對所有gif自動轉存webm(imgur稱之為gifv,但是注意gifv並不是一種格式的名稱,本質是webm)。

看到好多人拿GIF體積小質量高來說事兒,這簡直讓人啞口無言。GIF最大只支持256色,從根本上就已經和質量無緣了。而無損壓縮的特性、外加幾十年前的技術導致同樣的畫質下(首先,你要能用256色打到同樣的畫質……)GIF的視頻可以達到webm的十倍甚至幾十倍之大,所謂的省網速也是無稽之談。

當然,GIF的無損特性導致他在顏色簡單的東西如LOGO之類的圖片時仍有一定的用武之地(但是比起現代的無損圖像格式如PNG毫無優勢)。對於諸如QQ表情之類的東西,由於本身調色板就很小,我認為GIF依然有其存在的意義。但是用GIF去發一小段視頻真的該淘汰了。

有人會說,你說了這麼多,為啥GIF就是比視頻流行?這首先是歷史原因,就和MP3依然流行一樣,按下不表。但是GIF曾經有個真正的優勢是瀏覽器支持。在前HTML5時代,任何主流瀏覽器都可以輕鬆顯示一張GIF圖片,但是對於視頻卻需要藉助Flash之類的笨重的技術才能實現。而人民大眾又有發送視頻的需求。所以雖然GIF根本不是為動畫而生而且也幾乎沒有任何對動畫的優化(如幀間壓縮),但是介於幾乎是當時唯一的選擇,GIF的流行也成為必然。

但是現在已經是2015年了。所有的主流瀏覽器都對webM為代表的video元素有著良好的支持。還在用GIF只能說是頑固不化。技術的革新是有一定慣性的,尤其是對於普通用戶,這我們可以理解。但是當你看到連/r/gifs都稍顯諷刺地大面積使用gifv(前面有介紹)的時候,就該知道時代變了,也該變了。

但是很可惜,國內的軟體、網站居然還非常嚴重地缺乏對webm的最基本支持。

有的回答提到「就一個幾秒的玩意還整個視頻,太浪費」。雖然這句話看上去很無厘頭(因為如我前面說了,發GIF比視頻本身更浪費),但是我了解他們的痛:發個GIF大概幾秒鐘一粘貼就完了,最多找個圖床傳一下。想發個視頻?那要了老命了,你可能要跑去優酷傳,再審核個20分鐘,最後發現還貼不出來,是個鏈接,大家都懶得點,別說話題也過去了。說白了,門檻太高。

所以這真的不能怪用戶不上,想上也上不了。最臭名昭著的例子,QQ。GIF在新版的大小限制是6M。6M其實足夠干很多事情——如果不是那麼在乎畫質,甚至顯示個十幾分鐘的視頻都足夠用。但是如果你要把可能一個只有幾秒的搞笑錄像發上來,你得拼了老命的壓縮,直到幀率和畫質都慘不忍睹為止(嗯我還沒提到QQ的GIF的最小幀間距是0.1秒的事兒)。這不但不是對帶寬的節約,反而是巨大的浪費。經常看到reddit上一個好玩的視頻想隨手轉發一下(可能也就1、2M),結果一看GIF版大小:50M… 我還是歇歇吧。當然讓我重申一下,GIF對於顯示錶情來說是足夠用的——因為絕對體積夠小,而且由於無損特性可能對於像素畫風格的動圖效果會更好一些。

另外一個例子就是微博。微博其實支持視頻上傳,但是那啥秒拍視頻居然還在用flash播放器來顯示…說到這裡跑題一句,國內視頻網站的技術落後程度簡直嘆為觀止。

總結一下,我的觀點如下:

1 對於表情之類的應用,由於本身體積夠小、對畫質要求不高,GIF完全夠用,故並沒有用諸如APNG或者webP來取代的急切需求。這情況就和MP3依然流行差不多——新的提升不大,老的還夠用。

2 對於發小短視頻,GIF正在也應該被WebM之類的具有高度HTML5支持的格式取代。因為用GIF來顯示這類內容本來就是由於時代局限性而產生的一個美麗的錯誤。


瀏覽器之間的爭鬥只是部分原因,補充其他幾個原因

第一:PNG 不見得都比 GIF 小

不要覺得 PNG 一定比 GIF 小,基於lzw的gif在色彩數比較少的情況下,能用較低的bit位表述數據,獲得比基於 deflate 的 png 更好的壓縮效果,特別適合用在 web 上一些簡單的 icon 圖標之類的,比如新浪微博的圖標,GIF明顯小於 PNG8,更是只相當於 PNG24的 25%:

第二:GIF實現簡單,支持工具多

由於GIF專利幾年前已經過了15年專利期限,意味著大家可以隨便使用,PNG的代碼一大坨,加上zlib,代碼幾近500KB,而gif的編碼和解碼,加起來可以在 1000行以內實現,你試想一個軟體是嵌入gif容易呢?還是嵌入 PNG容易?閑著沒事實現個 gif encoder/decoder 也是一個很好玩的小玩具。

第三:GIF動畫還很活躍

雖然有 APNG, MNG, WEBP 這些東西的存在,但是 1000 行內實現動畫效果,而且實際效果還不錯,為什麼不呢?雖然gif只支持256色,但是依靠色彩抖動,大部分時候能夠表達更多色彩效果,即便對於10秒以內的短視頻,以及屏幕錄像,不是也有很多人用GIF么?

---
最後,不管是 PNG, APNG, MNG, WEBP 我覺得都不夠完美,還有很多待提高的空間,就以無損靜態圖片壓縮的 PNG 為例,有兩個致命的問題:過濾方式太少只有4-5種,並且是基於整張圖片的,比起基於塊的無損預測效率差很多(webp無損基於塊編碼,至少都提供了13種預測方法);其次,使用deflate作為底層壓縮,早就該使用更好的 lzma2 壓縮演算法了(7zip),更不提各種色彩變換方式了。

WEBP無損做的比PNG好不少(其實當就無損+透明,PNG在現有格式中已經不行了),但有損方面基於vp8 intra的技術還需要進一步提高,而且動畫方面 webp實現比較弱智。

---
無損壓縮的方向是 webp的 lossless 模式繼續增強,搭配lzma2,有損壓縮的方向是 hevc的 intra類似演算法,動畫壓縮的方向是引入類視頻編碼的技術,而如今,不管是 png, apng, mng, webp,都還有未盡如人意之處,再等等吧,未來很容易出現個更好的格式,把他們都代替了。


前面的答案都很好,也都很完善了。但是我們從另一個角度來看如何?GIF也不過就20來年,比GIF更原始的BMP點陣圖,直到現在也仍然在使用中——為什麼?因為它就是最簡單粗暴的逐個像素記錄實現啊。再考慮一下文字的情況,計算機史上最原始的文本格式ASCII編碼的TXT文本,至今超過50年歷史,仍然廣泛存在於你的計算機上的每一個角落裡(大量的ini、cfg、inf……文件實質上都是TXT文本)——為什麼如此原始而簡單粗暴的格式沒有被DOC、HTML等高級文本格式取代?恰恰正因為其原始簡單粗暴,所以可以保證其最大限度的兼容性,從而可以跨平台廣泛應用。某種程度上來說,結構越簡單,適應性越強,單細胞生物未必一定會被高等生物取代,只是如此而已。

==============2015-08-18補充============
原答案關於BMP的描述不妥,故修改一下。


我個人做gif圖片的時候,最惱火的兩個問題

1)自然是因為無損。這導致如果幀數高了的話,gif非常大。
2)則是因為調色盤的原因,用photoshop做出來的gif調色盤最多只有256色。這導致的最大一個問題就是色階過渡及其糟糕,會出現大量色塊,使得成品效果非常糟糕(當然,現在也有超過256色階的gif存在)

現在要取代gif的話,也只能引入視頻壓縮的方案。但是畢竟相比gif這樣每幀都是I幀的情況要稍微複雜一些
國外有些論壇使用webm來替代。但是說實話,這種結構有時候無法直接嵌入,需要單獨開一個頁面去看。始終不如gif 那麼方便

不過gif 相比於jpeg這個格式來說,畢竟還是屬於小眾的圖像格式。所以受重視的程度也完全不同
而且,像圖像格式這種東西,其實要推廣還是挺困難的


為了表情包的繁榮


看到這麼多人在爆操gif我也來說說:

Gif壓縮比視頻差。。。我承認
Gif太老了不支持全彩。。。我承認
Gif僅僅的優勢是支持幾乎所有瀏覽器。。。我承認

我的工作是運營公眾號。。。我承認
我必須找到一個讓你們無法反駁的理由來說服你

微信公眾號,我無論壓縮成JPG,設置成怎樣的像素(最低長邊300px/600px/1024px/2048px/3072px/4096px/5120px),PS的壓縮率100%90%80%70%60%直到圖片接近慘不忍睹

PNG,降低到顏色4色,2色,直到圖片接近慘不忍睹為止

無論原圖是矢量圖(圖形),還是點陣圖(照片)
公眾號都把他們壓縮得像狗逼一樣,狗逼一樣,狗逼一樣。。。重說三

(誰叫客戶不打開大圖看啊,打開是清晰的,Sorry,叫拿Qiang指著客戶打開大圖看嗎?客戶只會說:「你們的圖片壓縮得真不專業」)

後來發現,把JPG壓縮到900X600(3:2單反照片)8bit顏色
把PNG按需壓縮到2/4/8/16/32/64/128/256色(8bit以內)像素不過一千

用PS轉換成GIF,靜態圖保證大小在2M

見見見見見。。。證奇蹟的時候

公眾號文章圖片
無論是:
iPhone6s iPhone6s plus 三星s6+
從此以後不再朦朧,從此不再像毛片一樣打格,從此不再像1080P屏幕看480P小電影一樣精彩!
而矢量圖(文字圖)方面,給PM看的時候的第一句說:
我草?現在公眾號都能上傳svg了??

因為。。。
(重說三):騰訊是不會壓縮GIF的,騰訊是不會壓縮GIF的,騰訊是不會壓縮GIF的!!!!!!

我都是今天才研究出來的
平時看一大堆畫質爛成狗的攝影類公眾號,只能夠說,呵呵,呵呵

對於照片的畫質,我已經向騰訊客服N+1次提建議,都猶如有去無回的漂流瓶一樣。

不知道,可笑還是可悲,什麼webm當道,html5取代gif的時代,
gif還能以這種方式苟且生存著,還是因為全球最龐大的BAT其中一家不懂技術的進步
而且,要是gif能支持全彩就好了。。。

最後一句:不匿,聽說騰訊要入股知乎了,把這裡當成騰訊客服提問一下,請問可以改進一下圖片壓縮嗎?或者回復一下我們這些打工狗也是很開心的。

最最後一句:狗,對不起拿來當形容詞。。。

最最最後一句:顏色差別太大的點陣圖(照片)會被gif的8bit色彩壓縮得慘不忍睹的,還請大家按需使用以上方法編輯公眾號發布的圖片。


因為IE6不支持


GIF 至少在最有名的圖床 imgur 和 微博 twitter 上已被取代,GIF、APNG、Webp 等已經落伍,請不要再跟隨


你覺得不適應現在的互聯網環境,我怎麼覺得它還是很適合呢?並不是所有人都和你一樣覺得寬頻費用很低的,比如在移動互聯網上,還有很多很多人在用GPRS呢,如果沒有GIF,你讓他們傳個QQ表情也要用youku嗎?

GIF的優點就是小巧玲瓏,256色的限制和簡單的LZW壓縮演算法使得它不僅比一般的圖片文件要小,而且解析時的性能也非常好。同時它還支持動畫。總的來說,GIF在功能、色彩和文件大小這三個方面找到了一個很好的平衡點,使得它滿足了在數據傳輸帶寬不足的前提下,快速傳輸圖片和動畫的需求,比如各種聊天表情,各種小logo之類。

如何推出新格式這個問題,其實就跟如何推出一個新產品一樣,就是人無我有,人有我優,如果是「人有」,再考慮一下用戶的遷移成本,沒了。


你看這個網站
GIF vs APNG vs WebP
說明 gif 還行。。。起碼在我的 chrome 上 apng 不動 webp 體積大


先答題,任何東西的取代都是需要過程的。同樣的,新的圖片格式推出也是需要克服不少阻礙的。

WebP - 圖片格式的發展趨勢

GIF 正在被慢慢取代,WebP 相較於 GIF,提供有損壓縮和無損壓縮,而且可以合併有損和無損幀;

谷歌於 2014 年提出了動態 WebP,拓展 WebP 使其支持動圖能力。

動態 WebP 相較於 GIF

  • 支持更豐富的色彩:支持 24-bit 的 RGB 顏色以及 8-bit 的 Alpha 透明通道,GIF 只支持8-bit RGB 顏色以及 1-bit 的透明
  • 佔用更小空間:GIF 轉成有損動態 WebP 後可以減小 64% 的體積,轉成無損可以節省 19% 的體積,以此更適應移動網路的動圖播放
  • 添加了關鍵幀、metadata 等數據

其實 WebP 在各大互聯網公司已經使用得很多了,國外的有 Google(Chrome Store已全站使用 WebP)、Facebook 和 ebay,國內的有淘寶、騰訊和美團等。現又拍雲提供的 WebP 轉碼功能讓大家在保障圖片質量的情況下降低用戶流量成本,讓用戶獲得更好的用戶體驗。

相關推薦: 圖片秒瘦 90%,WebP 轉換技術讓圖片「薄如蟬翼」


個人以為技術導致的體驗依賴主要兩個原因:

1)體積小。GIF是常用動畫格式中體積最小的。有人說webm體積小,但是別忘了,這是因為GIF是2)無損壓縮的,而其他大多數動畫格式是有損壓縮。無損與有損有什麼區別?區別在於無損壓縮的圖片製作者可以放心微調所有細節,包括時間和畫面。對於許多早期動畫黨來說這一特性遠超任何視頻技術。

兩點綜合,由於有人製作有趣而高質量的內容保證了供應,同時體積小保證了傳播,使得GIF被廣泛應用。至於現在為什麼還沒淘汰,完全是因為積累了太多用戶和內容,需要時間逐漸淘汰。

推出任何一個新格式都需要面對以下三重障礙:
1)生產
2)傳播
3)消費
只要這三個環節任何一個存在凈遷移成本,就難以實現替代之前的產品。


在國外圖片交流版4chan上 現在人們要貼動態圖片的話 普遍做法是貼WebM


個人感覺是,標準永遠落後於技術。一個標準的背後,代表的是無數大公司的利益。
例子有很多,ogg 之於 mp3,aac。gif 雖在技術上落後,但是支持廣泛。我的網站為了減少圖片體積,對 chrome 用戶會返回壓縮過的 webp 圖片,而對其他用戶會返回 png/jpeg。
總設計師曾經說過,讓一部分人先富起來…


難道沒有人提到gif是專利產品.


因為看視頻有廣告|?ω?`)


因為GIF可以承載一部電影《雷政富》,試問哪個圖片格式可以做得到?????


gif都是經過了很多年才被逐步支持的,現在大家對gif的支持都還很不好,更別想換新的格式了。


沒有flash國內視頻沒法用


推薦閱讀:

TAG:WebM | GIF | 計算機圖形學 | WebP | 圖形文件格式 |