romeolight の画像エンコーダは素晴らしい

普段、ブログで画像を使うことは稀なのですが、たまに使いたくなります。
そんな中、面白そうな記事を発見しました。

目次

JPEG エンコーダ

base on GoogleがJPEGエンコーダー「Guetzli」をオープンソースで公開 - GIGAZINE
2017年01月13日 08時00分
Google製のJPEGエンコーダー「Guetzli」がGitHubで公開されています。生成されるJPEGファイルはlibjpegと比較したとき、同等の品質でファイルサイズが20~30%ほど小さくなるとのことです。

base on JPEG画像の画質そのままでさらにサイズを小さくする「mozjpeg」プロジェクト - GIGAZINE
2014年03月31日 20時00分
非営利組織のMozillaは、そんなJPEGファイルを品質を落とさずにさらに10%程度圧縮できる新しいJPEGエンコーダ「mozjpeg」のプロジェクトを開始しています。

Google の Guetzli は偶然記事を見つけたので、その時は斜め読みした程度でした。
後で調べた時に Mozilla の mozjpeg が検索にヒットして、調べるうちに興味が湧いてきた感じです。

学生の頃、HTMLタグを削って通信量をどれだけ削れるかに邁進していた頃を思い出しました...。

画像最適化ソリューション

romeolight という Webサイトで画像最適化ソフトウェアが配布されています。
各々 GIF, JPG, PNG に対応しています。

base on 画像最適化ソリューション - romeolight

GIFmicro | GIFファイル最適化アプリ | Romeolight
JPEGmicro | JPEGファイル最適化アプリ | Romeolight
PNGmicro | PNGファイル最適化アプリ | Romeolight

JPEGmicro vs. PNGmicro

Lubuntu(Ubuntu)のスクリーンショットソフトウェアは標準で gnome-screenshot が組み込まれています。
gnome-screenshot は PNG形式でキャプチャを取るので、PNGファイルの処理前後と GIMP で JPEG変換したファイルの処理前後を比較してみました。
それぞれ、対応するソフトウェアは以下になります。

  • PNG ファイル最適化 : PNGmicro
  • JPEGファイル最適化 : JPEGmicro

検証

設定

以下の条件で確認しました。

JPEGmicro

  • バージョン
    JPEGmicro 2.4
  • JPEG OPTION
    ✓ Exif 及び XMP データを削除
    ✓ ICC カラープロファイルを削除
    ✓ プログレッシブ
    ✓ 非可逆圧縮モード (非可逆圧縮レベル : 50)
    ※オプション全てにチェックを入れており、且つ非可逆圧縮レベルを標準の75より低い「50」に設定しています。

PNGmicro

  • バージョン
    PNGmicro 2.1
  • PNG OPTION
    最適化レベル : 3
    ✓ インターレス
    ✓ カラープロファイルを削除
    ✓ 非可逆圧縮モード (非可逆圧縮品質 : 0)
    ※最適化レベルは標準の3のままで使用しています。
    最適化レベルは1でもサイズは変わりませんでした。なお、6ではフリーズしました(マシンパワーの可能性あり)。
    また、非可逆圧縮品質は最低の「0」に設定しています。

サイズ比較

実際に処理した結果、前後のファイルサイズを表にしました。
なお、画像は先日記事にした「Chrome 拡張機能に対応した Opera 55」で使用した画像と同じです。
※記事で使用したのは PNG形式の画像です。

ファイル 元サイズ 処理後サイズ 処理後サイズ(率)
PNGmicro
20180822-1.png 399,688 byte 154,865 byte 38.7 %
20180822-2.png 319,491 byte 118,573 byte 37.1 %
20180822-3.png 243,633 byte 96,553 byte 39.6 %
20180822-4.png 12,179 byte 4,956 byte 40.7 %
20180822-5.png 52,057 byte 22,686 byte 43.6 %
20180822-6.png 91,136 byte 39,254 byte 43.1 %
JPEGmicro
20180822-1.jpg 466,510 byte 67,584 byte 14.5 %
20180822-2.jpg 315,101 byte 42,046 byte 13.3 %
20180822-3.jpg 302,133 byte 42,504 byte 14.1 %
20180822-4.jpg 33,474 byte 5,849 byte 17.5 %
20180822-5.jpg 134,924 byte 17,400 byte 12.9 %
20180822-6.jpg 235,685 byte 31,256 byte 13.3 %

考察

  • ファイルサイズが大きい方が結果が出やすい
    元のファイルサイズが 100kb 以上無いと、JPGmicro・PNGmicro の差異は出づらいようです。
  • JPG は非可逆圧縮なのでサイズを落としやすい
    可逆圧縮の PNG と比較すると JPG はサイズの落としやすさが顕著に出ました。
    今回、JPGmicroで非可逆圧縮レベルを"50"に設定しました。
    結果として、ファイルサイズが極端に小さくなった反面、目視で劣化が分かる程度の画質となりました。

可逆圧縮の PNG は設定によらず綺麗にサイズダウンが可能です。
非可逆圧縮の JPG はサイズを大幅に落とせる反面、画質に影響が出ます。

どんなときでも綺麗に、をモットーにするなら PNG もありではないでしょうか。