webP用法

WEBP是什麼呢?
WEBP 是google推出的意圖改變web圖片JPG、PNG、GIF三分天下局勢的一種圖片格式。它不僅支持無損或有損壓縮、alpha通道,還支持動畫演示。在同畫質的情況下,webp格式圖片佔用體積相較於jpg圖片大約減少40%,相較於無損png圖片大約減少30%。具不完全統計,互聯網流量中60%都產生於圖片,如果能用上webp格式,網站的訪問速度將會大大提升。

兼容及使用

目前,移動端Android4.0以上、PC端chorme 10+(14 ~ 16 有渲染bug)、opera 11+ 、safri均支持webp格式圖片。firefox曾經拒絕支持webp,今年也重啓了關於webp第二次討論https://bugzilla.mozilla.org/show_bug.cgi?id=856375 ( 第一次討論:地址 ),大家可以關注到裏面的進度,safri也開始支持webm,相信webp也會在不久的將來得到支持,好的東西始終是會被大家接納的。

目前要實現全瀏覽器兼容,雖然可以引入flash,但引入成本太高而且轉爲flash之後圖片不能再操作,缺少靈活性,同時又會佔用過多的CPU。因此,目前可行的解決方法只能是同時提供兩套圖片。

1.服務端方式服務端就只能通過UA信息來判斷 可參考:https://github.com/igrigorik/webp-detect ,針對不同瀏覽器提供不同文件。
webp

2.JS判斷瀏覽器是否支持WEBP,不同的src寫入img中,樣式中的圖片可以通過檢測後添加class,直接上代碼吧

  1. var testWebp = function(callback){
  2. var image = new Image();
  3. image.onerror = function() {
  4. callback(false);
  5. };
  6. image.onload = function() {
  7. callback(image.width == 1);
  8. };
  9. image.src = 'data:image/webp;base64,UklGRiwAAABXRUJQVlA4ICAAAAAUAgCdASoBAAEAL/3+/3+CAB/AAAFzrNsAAP5QAAAAAA==';
  10. }

   提示:你可以先修改部分代碼再運行。

編解碼速度

目前WEBP與JPG相比較,編碼速度慢10倍,解碼速度慢1.5倍,實際上對於絕大部分的網絡應用而言,圖片都是靜態文件,所以對於用戶使用只需要關心解碼速度即可。針對1.5倍的解碼速度是否影響用戶體驗的問題,我們可以看看ebay團隊的這個測試,50張同樣質量的WEBP與jgp加載的速度對比:http://www.webpagetest.org/video/view.php?id=130125_7b15e676f5fa0b736f247ff0ed36517e64d9c9ea

此測試表明,webp雖然會增加額外的解碼時間,但是由於減少了文件體積,縮短了加載的時間,實際上文件的渲染速度反而變快了,從下面的圖片中可以很明顯的看到。

web2

轉換WEBP

windows下安裝 WebpCodecSetup.exe (才能查看WEBP格式圖片) 以及 libwebp-0.3.0-windows
下載安裝 https://code.google.com/p/webp/
解壓libwebp後,cd到解壓文件夾後輸入轉換命令,命令的結構 cwebp [options] input_file -o output_file.webp

jpg cwebp input_file -o output_file.webp

(jpg是有損壓縮的,options可以選 -q 設置質量,默認爲75)

png cwebp -lossless input_file -o output_file.webp

具體的參數可以查看 : https://developers.google.com/speed/webp/docs/cwebp?hl=zh-TW

應用場景

目前如果要大面積應用WEBP,無疑對服務器存儲是一個很大考驗。我們不能拋棄原有格式,那麼存儲的數據量將會增加60%,如果請求時再轉換,由於目前轉碼的效率太低,特別的大文件的PNG速度相當的慢,這兩點都是目前實際使用最大的痛點。

即使要嘗試使用,也不能像facebook那樣,在相冊中做試驗,相冊類的應用很多用戶會有把照片從web上另存的需求,而WEBP在沒有安裝解碼包的情況下,即使下載到電腦中也是無法直接瀏覽的,所以一定要避免這種應用場景。

目前我認爲可行的應用場景:

1.客戶端軟件,內嵌了基於Chromium的webview,這類瀏覽器中應用的網頁是可以完全使用webp格式,提升加載渲染速度,不考慮兼容。

2.用node-webkit開發的程序,用webp可以減少文件包的體積。

3.移動應用 或 網頁遊戲 ,界面需要大量圖片,可以嵌入webp的解碼包,能夠節省用戶流量,提升訪問速度

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章