Jxck

WebP – Webを速くするためにGoogleがやっていること Make the Web Faster 01 –

連載: Make the Web Faster (2)

使使HiDPI Google調Web65%Intro使

webp logo
WebPGoogleWebP使


1px WindowsBitmap(.bmp)



可逆圧縮のイメージ図
lossless



非可逆圧縮のイメージ図
使


Web使


JPEG: 

GIF: (*1)

PNG: 使


使GoogleWebP

*1: 

WebP


Weppy GoogleVP8WebMWebM1WebPRIFF

https://developers.google.com/speed/webp/

WebP


 / 

 () 










GoogleGmailGoogle DrivePicasaPlay MagazinesImage SearchYouTubeChrome Web StoreFacebook


WebP*2


Chrome

Opera (12.0~)

Android Browser (4.2~)

Chrome for Android


FirefoxIESafari

*2: http://caniuse.com/webp


WebP


WebP Library

Pixelmator

ImageMagick

GIMP

Leptonica

XnConvert

Photoshop Plugin

img2webp.net


FacebookWebP

WebP OSWebPNGJPEG

WebP Library


WebPCLIWebP

Downloading and Installing WebP




cwebp: WebP 

dwebp: WebP 

vwebp: WebP 

webpmux: 

gif2webp: GIF  WebP 




使PNGJPEGGIF()



PNG PNG使WebUIPNGWebP
::
$ cwebp uikit.lossless.png -o uikit.lossless.webp -lossless
PNG WebP
loss less png
74 KB 62 KB

非可逆圧縮

非可逆圧縮をJEPGファイルと比べてみます。 対象はJPEGがよく使われる写真として、おなじみlennaさんのPNGをもとに、ImageMagickでJPEGに変換したものとWebPに変換したものを比較します。

::
$ cwebp lenna.lossless.png -o lenna.lossy.webp
$ convert lenna.lossless.png lenna.lossy.jpeg
JPEG WebP
74 KB 20 KB

アニメーション

5つのJPEG画像をもとに、500msごとに切り替えるアニメーションをGIFとWebPで作って比較します。

::
$ webpmux -frame 1.webp +500+0+0+0 -frame 2.webp +500+0+0+0 -frame 3.webp +500+0+0+0 -frame 4.webp +500+0+0+0 -frame 5.webp +500+0+0+0 -o animation.webp
$ convert -delay 50 -loop 0 *.jpg animation.gif
GIF WebP
262 KB 55 KB

WebPvwebp
::
$ vwebp animation.webp

GIFWebP


WebP*4


: JPEG  5~10 

: JPEG  1.3 


WebP

CPU /Web



*4http://www.igvita.com/slides/2013/io-webp.pdf (P.13)


WebPPNG




Accept 

User-Agent 




JavaScript 


Accept 


HTTP1.1 WebPAcceptimage/webp

Chrome29HTMLimg

Chrome の Accept Header
URL AcceptVary (GoogleBot)
::
Vary: Accept

webp-detect

User-Agent


Chrome29imgimage/webpURLCanary WebP */* Accept

AcceptAccept *3

User-Agent http://caniuse.com/webp  Google Page Speed 

*3 HTTP/2.0HPACKHTTP/1.1

Nginx 


Nginx logo.webplogo.png

実際に以下のリンクで動作を確認できます。(対応ブラウザはWebP、非対応はPNG画像が返ってきます)

https://jxck.io/labs/webp/logo

HTMLごと切り替える

logo.webpとlogo.pngのURLを明示的に分けたい場合は、それらを含むHTMLをまるごと切り替える方が良い場合もあります。



User-AgentVary
::
Cache-Control: private

WebPlogo.webpURLtwitter WebPUser-Agent

JavaScript


Modernizr.jsWebP調 JavaScript



WebPWebM1 videoWebP weppy.js 

WebMFireFoxWebP

より強力なライブラリとして、WebPのデコードをJSでやってしまうwebp.jsというライブラリもあります。 こちらは、なんとIE6以降でほぼ全てのブラウザに対応しています。



WebP

WebPWebP


Version

  • libwebp 0.3.1
  • ImageMagick 6.8.6-3
  • Mac OSX 10.7.5

Photo License

週間PVランキング

新着記事

Powered byNTT Communications

tag list

アクセシビリティ イベント エンタープライズ デザイン ハイブリッド パフォーマンス ブラウザ プログラミング マークアップ モバイル 海外 高速化 Angular2 AngularJS Chrome Cordova CSS de:code ECMAScript Edge Firefox Google Google I/O 2014 HTML5 Conference 2013 html5j IoT JavaScript Microsoft Node.js Polymer Progressive Web Apps React Safari SkyWay TypeScript UI UX W3C W3C仕様 Webアプリ Web Components WebGL WebRTC WebSocket WebVR