はじめに
自分は知らなかったのですが、チームメンバーより、WebPという画像フォーマットがあることを知りました。Google製というのと、サイズがかなり小さくなるということで検証してみました。
あまりPHPでやってる事例も無かったので整理がてら投稿しておきます
WebPとは
- Google: https://developers.google.com/speed/webp/
- wikipedia: https://ja.wikipedia.org/wiki/WebP
- WebP は、米Googleが開発しているオープンな静止画フォーマット。ファイルの拡張子は「.webp」
- 2010年9月30日に仕様が公表され、各種ツールと共に提供が開始された。
- JPEGと比較して25−34%小さくなるらしい。
wikipediaからは上記の通りです。
実は、IE, Safari, iOS では対応していないという話。(ここの最新情報知ってる方いたら教えてください)
PHPでJPEGをWebPに変換してみる
準備
- PHP5.5 以上
- GDライブラリ
- 参考:http://jp2.php.net/manual/ja/function.imagewebp.php
ソース
// 返値などあまりちゃんと判定してません
$jpeg_path = "hogehoge.JPEG";
$webp_path = "fugafuga.webp"
// 画像読み込み
$img = imagecreatefromjpeg($jpeg_path);
// 画像変換
$ret = imagewebp($img, $webp_path);
// 画像リソース解放
imagedestroy($img);
結果: 1/8 になりました
- JPEG画像: 2.8M -> WebP画像: 313K
なんと約1/8程度まで小さくなりました。ちょっと驚きです。たいしたことしてませんが、かなり小さくなることがわかりました。
両方の画像を確認しても、見た目には違いが全くわかりません。というか自分には違いを見つけることがわかりませんでした。
まとめ
- 変換後のサイズは満足いくものになりました。
- 変換後の画質も自分の目では違いがわからないくらいです。
- Google 製品:Chrome, Android 関連では使えそう。(本当は全部対応してくれれば。。。)
私たちのプロダクトはそれほど大きくありませんが、通信量や表示速度を少しでも効率良くしたいという方には、非常に良いソリューションになるのではないでしょうか。WebPの情報はミクロな部分ではあったのですが、導入事例という形ではクックパッドくらいしかみつかりませんでした。まだまだここからなんですかね。