#始めに
GoogleがJPEGエンコーダー「Guetzli」をオープンソースで公開というネットニュースを見て、HDDを圧迫している画像ファイルを小さくできたらいいなと思い調べてみました。
検索してみると次世代jpegエンコーダのGoogle製「guetzli」とMozilla製「mozjpeg」を比較してみるというブログを発見しました。
googleの作ったguetzliだけではなく、Mozillaの作ったmozjpegというツールがあるみたいです。
ブログでは、現時点のバージョンでは、mozjpegの方が優れているという結果になっています。
ブログで比較に使われたバージョンは、
Google/guetzli v0.1
mozilla/mozjpeg v3.1
ですが、guetzliはv0.2になっており、使ってみると驚くほど縮小されるので、もしかすると大幅に改善された可能性もあるなと思い比較してみました。
##Mozjpegの準備
How to Install mozjpegを参考にしてインストールします。
$ sudo apt-get install git
$ git clone https://github.com/mozilla/mozjpeg.git
$ sudo apt-get install autoconf automake libtool nasm make
$ cd mozjpeg
$ autoreconf -fiv
$ mkdir build && cd build
$ sh ../configure
$ sudo make install
シンボリックリンクを貼って使いやすくします。
$ sudo ln -s /opt/mozjpeg/bin/jpegtran /usr/local/bin/mozjpeg
使い方は、こんな感じです。
$ mozjpeg -optimize -copy none image.jpg > compressed.jpg
##Guetzliの準備
guetzliは、ビルド済みの実行プログラムが用意されているので、guetzli_linux_x86-64をダウンロードします。
ダウンロードしたファイルに、シンボリックリンクを貼って使いやすくします。
$ sudo ln -s /opt/guetali/guetzli_linux_x86-64 /usr/local/bin/guetzli
使い方は、こんな感じです。
$ guetzli -quality 84 image.jpg compressed.jpg
##比較
次世代jpegエンコーダのGoogle製「guetzli」とMozilla製「mozjpeg」を比較してみるブログと同じ条件で比較しようかと思ったのですが、何故かmozcjpegに、qualityオプションが見つからない(?)
なので、同じ画質オプションでの比較はやめて、デフォルト設定での比較にしました。
###オリジナル画像
サイズ:305.9 kB (305,919 bytes)
###Mozjpeg画像
サイズ:289.5 kB (289,477 bytes)
###Guetzli画像
サイズ:273.1 kB (273,145 bytes)
###結果
どちらも目視で分かる劣化は認められませんでした。
変換速度は、Guetzliが比較にならないほど遅く画像によってはエラーになるようです。
しかしながら圧縮能力は、Guetzliの方が優れています。
osamu1203さんの比較とは逆の結果となりました。
まだ、v0.2ですし変換速度と安定度が改善されたらGuetzliが、オススメです。
#再検証
osamu1203さんからmozjpegには、可逆版コマンド(jpegtran)と不可逆版コマンド(cjpeg)が分かれているとの指摘がありましたので、再検証してみました。
バージョンは、guetzli(v0.2)/mozjpeg(v3.1)です。
##蜂の画像(bees.png)
まずguetzliの蜂のサンプル画像を使って検証しました。
-quality | guetzli | mozjpeg |
---|---|---|
100 | 148.4kB | 75.3kB |
95 | 37.9kB | 34.9kB |
90 | 25.8kB | 25.2kB |
85 | 20.3kB | 20.0kB |
osamu1203さんの実験結果と同じで、mozjpegの方が優秀という結果になりました。 | ||
バージョンの違いによる性能アップは、今のところ無さそうですね。 |
##猫稲荷の画像
ついでなので、前回使った猫稲荷の画像も試してみました。
オリジナル画像のサイズは、3.4MBです。
-quality | guetzli | mozjpeg |
---|---|---|
100 | 3.3MB | 5.2MB |
95 | 3.1MB | 3.9MB |
90 | 2.6MB | 3.3MB |
85 | 2.3MB | 2.8MB |
こちらの画像では、guetzliの方が優秀という結果になりました。 | ||
画像によって、得意不得意がでてくるのかも知れません。 | ||
guetzliの速度はとても実用に耐えないのですが、改善されたらもう少し色々な画像で試して見たいと思います。 |