ブログに写真を載せる際はPhotoshopで編集後に画像オプションで画質を『最高』にしてJPEGで保存しています。過剰品質だろうとは思うものの,低レート時のJPEGノイズを神経質に気にしてしまうのと今日日ナローバンドも無いだろうから少々容量食ってもまあいいかと。
ところが先日も書いたとおりこれがモバイル回線からのアクセスが多いとなると問題でして。サイト快適度チェッカみたいなサイトでチェックすると案の定『画像が重すぎんぞこんなもんもっと圧縮できんだろコラ』的なワーニングが山ほど出てしまいました。
という訳で3月頃リリースされて話題になっていたGoogleのJPEGエンコーダ Guetzli を試してみることに。画質を保ったままファイル容量を20~30%削減出来るよってヤツですね。
Guetzliはリリース時から興味があったものの実行環境の構築が結構面倒っぽいなと思ってスルーしていたのですが,よくよく読んだら Homebrew のインストールされたMacならコマンド一発で済むことが判り幸いそんなMacが手元にあったので
$ brew install guetzli
でサクッとインストール完了。
USAGEは
guetzli [--quality Q] [--verbose] original.png output.jpg
--quality : 出力するJPEGの品質を84~100の範囲で指定,デフォルトは95
--verbose : 実行中に経過を表示
で,出力結果はこんな感じ。
オリジナル(Photoshop出力) ...131kB
Guetzli Q=84(最低画質) ...46.5kB
Guetzli Q=95(デフォルト) ...78.4kB
Guetzli Q=100(最高画質) ...101kB
Q=84はオリジナルと比べてCPUのマーキング付近が劣化。単体で見れば全く気にならないかもしれませんがやはり神経質になってしまいます。Q=100は綺麗,Q=95も遜色無し。サッカーの写真や他の値でも試してみましたが個人的にはデフォルトのQ=95辺りが画質と容量のバランスが良さそうです。
これでサイト上の写真をぼちぼち出力し直そうかと思います。コマンドラインで1枚1枚出力していくのも面倒なので出力し直したいJPEGファイルを1つのディレクトリにまとめたら
$ mkdir output
$ for F in ./*.jpg; do guetzli $F output/$F; done
でoutputディレクトリにまとめて出力されます。結構時間が掛かるのでまったりやります。