GitHubに公開されている Google製の JPEG エンコーダー「Guetzli」のWindows版のバイナリを入手し、jpgファイルをドラッグ&ドロップできるバッチファイルを組んで遊んでみました。

Guetzli で jpg を 圧縮している時の画面
Guetzli で jpg を 圧縮している時の画面
▲クリックで拡大
「同等の品質でファイルサイズが20~30%ほど小さくなる」という噂通り、Guetzliを使って圧縮したjpgはかなり縮みます。

GIGAZINEさんで紹介されていた 「GoogleがJPEGエンコーダー「Guetzli」をオープンソースで公開」を読み、とても興味が湧いたのでチャレンジです。
(こういう流れでフリーソフト紹介するのは久しぶりだなあ・・・・と思って過去記事を調べてみたら、じつに7年ぶりでしたw)

ダウンロード

Guetzliについて

guetzli の使い道

現行バージョンでは変換が遅すぎ、かつ不安定過ぎるので、まだ通常利用には向きません。

大量アクセスのある Web サイトのヘッダ画像やcss画像など、少しでもファイルを小さくしたいケースでのみ利用するのがベストかと思います。
(記事部分の画像まですべて圧縮しようと思うと、とても骨の折れる作業になります)

スポンサー リンク

さっそく使ってみる

guetzli_windows_x86.exe
ダウンロードした「guetzli_windows_x86.exe」と同じ階層にバッチファイルを作成する。

バッチファイルの中身はこんな感じでOK。
guetzli_windows_x86.exe --quality 95 --verbose test.jpg output.jpg
  • --quality
    圧縮時の品質。省略可能。
    パラメータなしよりも 85~95あたりがエラーが出にくい。
    80以下にするとまともに変換できない。
  • --verbose
    これを付与するとエンコードの進捗が表示される。
    • 進捗はこんな風に表示される
      エンコードの進捗
      ▲クリックで拡大
    • 省略可能だけど、エンコード時間が非常に長いのでこのオプションは有効にしておかないと (大きな画像の場合は特に) 不安になる。
  • 「test.jpg」
    圧縮したいファイルの名前を入れる。
    パスを書いていない場合、「guetzli_windows_x86.exe」と同じ階層にjpgファイルを置く必要がある。
  • 「output.jpg」
    出力されるファイルの名前
    パスを書いていない場合、「guetzli_windows_x86.exe」と同じ階層にjpgファイルが出来上がる。

これでは使いにくいので、ドラッグ&ドロップできるバッチファイルを作成してみた。

ドラッグ&ドロップ 対応バッチファイル

for %%f in (%*) do (C:\000\guetzli_windows_x86.exe --quality 88 --verbose %%f C:\000\out_put\%%~nf.jpg)

Cドライブに「000」というフォルダを作り、そこに「guetzli_windows_x86.exe」を置いた場合の例です。
上記の場合、圧縮されたjpgは「C:\000\out_put\」に出力されます。

圧縮前の注意

現時点のバージョンではマジでエラーが出やすいです。

  • エラーが出た場合、出力側のjpgはファイルサイズ0になります。
    出力ファイルを上書きするようなバッチは書かないように注意しましょう。
  • 「--quality」の部分を88~92あたりで複数のバッチを作っておくのが良いです。
  • 複数一気にドラッグ&ドロップすると、さらにエラーが発生しやすくなります。
  • guetzli はExifなどのヘッダ情報は削除してくれません。
    • 極限までファイルサイズを削減したいと考える場合は、事前に「carmine」などヘッダ情報を削除できるツールを利用しておくのが良いです。
      ※ guetzli の圧縮は特殊なので、guetzli で圧縮した後では carmine は上手く作動しない。

実際に圧縮してみた

以下はこのサイトでアップしている画像の一部を carmine と guetzli で圧縮してみた結果
carmine と guetzli で圧縮した結果
▲クリックで拡大
左から順に
・PhotoShopのWeb書き出し(品質51)
・carmine でヘッダ削除&Huffmanテーブル最適化
・さらにguetzli (品質88)で再圧縮
公表通り、だいたい20~30%縮んでいます。

※ guetzli で圧縮した画像はこちらのページで閲覧できます。
(マザーのUEFI画面を写したjpg画像が guetzli 圧縮したものです)

guetzli の画質の劣化について

通常の画像の場合、劣化はほぼ気にしなくても良いレベルでした。
ということで、ちょっとイジワルなテストをしてみました。
の画質の劣化
▲ちょっと目が痛くなるような画像ですが、こんな感じのjpgの圧縮アルゴリズムが苦手な色合いでかつ思いっきりエッジが立ったサンプルを用意しました。

500%拡大するとこんな感じです。
の画質の劣化
▲こういう画像は、jpgの圧縮は思いっきり苦手です。
これをPhotshopのWeb書き出しの「画質51」と「画質100」で書き出し、それぞれを guetzli の「品質88」で再圧縮してみました。

PhotshopのWeb書き出し「画質100」の場合
PhotshopのWeb書き出し「画質100」の場合
▲マウスカーソルを乗せるとguetzli の「品質88」で再圧縮したデータが表示されます。
※500%後に再劣化しないよう、画像はpng形式で保存しています。

  • ファイルサイズは15kb → 10kb と約33%圧縮。
  • 元が「画質100」の場合はさすがに劣化が分かります。
  • しかし通常はjpgでこのようなデータを出力する事はない事と、本当に画質重視の場合は再圧縮しなければ良いだけなので、まず問題ないと思います。

 

PhotshopのWeb書き出し「画質51」の場合
PhotshopのWeb書き出し「画質51」の場合
▲マウスカーソルを乗せるとguetzli の「品質88」で再圧縮したデータが表示されます。
※500%後に再劣化しないよう、画像はpng形式で保存しています。

  • 通常のWeb用jpgの場合、PhotoShopのWeb書き出しではだいたいこの辺(画質51)が高画質の目安。(通常は「画質30~40」を選択する)
  • ファイルサイズは 5700b → 5200b と約6%ほどの圧縮。
  • png画像化した時の量子化の関係で元ファイルより画質劣化が大きくなってしまった。png化前の元ファイルを比較した時は本当に違いが分からないレベル。

あとがき

普通の写真の場合、画質劣化を確認するのはほぼ不可能なレベルでした。こういうイジワルなテストでもほとんど劣化が見られないあたり、guetzli の圧縮はとても優秀だと思います・・・・と言いたい所ですが、圧縮スピードの遅さと 変換の不安定さはチョット閉口レベルですね。
とりあえず、変換が安定して来れば Web用画像の最適化には面白いツールになりそうです。