WebPは簡単に説明するとJPEGよりファイルサイズの小さい静止画フォーマットを作り、ネット上を流れるトラフィックの削減とブラウザでの画像表示の高速化を目的にGoogleが動画フォーマットWebMを元に作成した画像フォーマットです。ちなみに「うぇぶぴー」では無く「うぇっぴー」と読むみたいです。
JPEGと同様、ロスレスやアルファチャンネルには未対応のフォーマットと成っています。
詳しくはこちらを参照下さい。
そのWebPがChrome 9でサポートされたとの話を聞いたので以前からやろうやろうと思いながらも先送りにしていたWebPとJPEGの画質とファイルサイズ比較をしてみました。
デジカメで撮影した画像で比較
デジカメで撮影した画像を一度、Pixelmator(画像編集ソフトです)でPNG形式のファイルに変換後、JPEGとWebP形式のファイルとして書き出しました。書き出しの「画質」はJPEGの時のデフォルト値(だったはず(^_^;))の85%と100%で出力してみました。
評価は元の画像と変換後の画像のRGB値の差で行いました。例えば元の画像のピクセルのRGBの値が(100, 100, 100)だったときに変換後のピクセルのRGB値が(110, 95, 100)だった場合は差の値は15として計算しています。
この様にして検証し、1ピクセルで発生した差の最大値、全体での合計値、平均値( ピクセルの差の合計/(画像の横サイズx画像の縦サイズ) )などの情報をまとめてみました。
なお、自分の作った検証プログラムはWebPのファイル読み込みには対応していないのでWebPに変えた後、PNG形式に変更して比較を行いました。
結果はこちら。
【デジカメで撮影した画像(一部を切り取り、320x240にしたもの)】
フォーマット(画質設定) | 最大値 | 合計値 | 平均値 | ファイルサイズ |
---|---|---|---|---|
オリジナルのPNG | 193KB(192223byte) | |||
WebP(100%) | 116 | 876946 | 11.418568 | 60KB(61736byte) |
JPEG(100%) | 8 | 58390 | 0.760286 | 170KB(174258byte) |
WebP(85%) | 123 | 1221516 | 15.905156 | 35KB(35468byte) |
JPEG(85%) | 116 | 910206 | 11.851641 | 67KB(68630byte) |
プログラムで生成した画像(グラデーション)で比較
と言う事で次はプログラムに生成させたグラデーション画像で比較して見ることしました。
【グラデーションの画像(640x480)】
フォーマット(画質設定) | 最大値 | 合計値 | 平均値 | ファイルサイズ |
---|---|---|---|---|
オリジナルのPNG | 6.0KB(6161byte) | |||
WebP(100%) | 8 | 799785 | 2.603467 | 3.8KB(3879byte) |
JPEG(100%) | 6 | 603520 | 1.964583 | 28KB(28427byte) |
WebP(85%) | 13 | 1143816 | 3.723359 | 1.7KB(1747byte) |
JPEG(85%) | 7 | 631680 | 2.056250 | 28KB(28577byte) |
プログラムで生成した画像(スライドの画像)
よく考えたらあそこまで綺麗なグラデーションの画像ってのもそうそう使うものでは無いなと思い、もう少し複雑な内容の画像でもテストしてみました。
元画像は以前、WebGL勉強会で使ったスライドの1枚。これであれば「テキスト+図」ですし、結構実際に使用するシチュエーションに近い様な気がします。
画像は「keynoteの画像をPDFで出力→その1枚をPNGで保存→WebPとJPEGに変換」という形で作成しました。
【スライドの画像(320x240)】
フォーマット(画質設定) | 最大値 | 合計値 | 平均値 | ファイルサイズ |
---|---|---|---|---|
オリジナルのPNG | 72KB(73846byte) | |||
WebP(100%) | 110 | 258137 | 3.361159 | 12KB(12560byte) |
JPEG(100%) | 7 | 77586 | 1.010234 | 58KB(58932byte) |
WebP(85%) | 138 | 373672 | 4.865521 | 6.4KB(6589byte) |
JPEG(85%) | 128 | 277334 | 3.611120 | 21KB(21461byte) |
WebP(85%)、確かにサイズはJPEGに比べサイズはかなり小さいのですがJPEGより元画像からの変化が大きいですね。
そこでJPEG(85%)の平均値を下回るまでWebPの画質を上げてみました。
フォーマット(画質設定) | 最大値 | 合計値 | 平均値 | ファイルサイズ |
---|---|---|---|---|
WebP(90%) | 116 | 327420 | 4.263281 | 7.7KB(7866byte) |
WebP(95%) | 113 | 282644 | 3.680260 | 9.8KB(10072byte) |
WebP(96%) | 113 | 282644 | 3.680260 | 9.8KB(10072byte) |
WebP(97%) | 112 | 276074 | 3.594714 | 10KB(10571byteKB) |
95%と96%は何故か結果が変わりませんでした。
平均値がJPEG(85%)を下回ったのは97%にした時でした。この時点で比較するとJPEGのファイルサイズに比べ、WebPは約半分になっています。
見た目での比較
まとめ
JPEGに比べると確かにファイルサイズは小さく成るようです。しかし、スライドの画像などの様に元画像から大きく変化してしまう画像も有るみたいです。
しかし、グラデーションの画像では画質面、ファイルサイズともに良好な結果だった様に思えます。用途によっては適したシチュエーションが有るかもしれません。
今回の比較で一番気になったのは実は最初のデジカメで撮影した画像の比較です。WebP(100%)とJPEG(85%)のサイズが60KBと67KBとなったヤツです。
確かにこれは最初の解析でも言った様にJPEGに有利な条件では有ります。しかし、デジカメで撮影した画像をWebPに変換して使うというのはJPEGの置き換えを意図するフォーマットで有るWebPではかなり使われるであろうと思われるシチュエーションでも有ります。
そのシチュエーションでこの位しかファイルサイズが削減されない様だとまだまだ閲覧可能なユーザが少ない状態で採用するのは難しいのでは無いかという印象を受けました。
※もちろん、今回比較したのは小さい画像だったのでかなり大きい画像を扱う様なサイトだとまた話は変わってくると思います。
今回はこの様な結果となってしまいましたが注目しているプロジェクトでは有るのでWebPに大きなバージョンアップがされた時などにまた比較検討してみようと思います。
※今回使用した画像ファイルはこちらにアップしておきました。
WebPの画像サンプル
http://tsuyobi.heteml.jp/html/webp/
関連サイト
Chrome 9登場、画像フォーマットWebP初対応 | エンタープライズ | マイコミジャーナル
http://journal.mycom.co.jp/news/2011/02/04/080/index.html
グーグル、画像サイズの小さな「WebP」フォーマットを提唱 : Googleウォッチ - Computerworld.jp
http://www.computerworld.jp/topics/google/189371.html