ウェブブラウザ「Firefox」やメールソフト「Thunderbird」を開発しているMozillaが「MozJPEG」というJPEGエンコーダーを公開しています。
画像容量を小さくする新しい技術やファイルフォーマットは定期的に現れていますが、どれも互換性という壁があり普及させるのは難しいのが現状です。
MozJPEGはlibjpeg-turboからのフォークで、既存のJPEGエンコーダーと互換性がありながら画像容量をさらに圧縮することを実現するために発足されたプロジェクトになります。
このプロジェクトは2014年にスタートしましたが、違いを最小限にしつつ高品質な圧縮を実現するため現在でも適時アップデートが行われています。
具体的にはバージョン1.0でjpgcrushというperlスクリプトを追加しているのですが、これによりWikipediaにあるサンプル画像1500枚の容量を平均で10%の削減できたそうです。
バージョン2.0ではプログレッシブJPEGだけでなくベースラインJPEGにも対応し、libjpeg-turboと比べて平均5%の容量を削減できるようになりました。
バージョン3.0以降もさらなる圧縮改善やバグ修正が続いています。
この記事ではMozJPEGのインストール方法と使い方を詳しく解説していきます。
MozJPEGをインストール
使用したOS
[root@localhost ~]# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core)
インストール手順
MozJPEGをダウンロードします。
記事更新時点での最新バージョンは3.3.1です。
wget https://github.com/mozilla/mozjpeg/archive/v3.3.1.tar.gz -O mozjpeg-3.3.1.tar.gz
autoconf、automake、nasm、libtoolをインストールします。
yum install autoconf automake nasm libtool
ダウンロードしたファイルを解凍してディレクトリに移動します。
tar xzvf mozjpeg-3.3.1.tar.gz cd mozjpeg-3.3.1
configureファイルを作成します。
autoreconf -i
コンパイルしてインストールします。
./configure make make install
mozjpegは/opt/mozjpegにインストールされています。
このままだと使いづらい場合は/usr/local/binにシンボリックリンクを作成してください。
ln -s /opt/mozjpeg/bin/jpegtran /usr/local/bin/mozjpegtran
便宜上moz***としていますが、自分が使いやすい名前を付けてください。
cjpegやdjpegなどを使う場合も同様にシンボリックリンクを作成します。
[root@localhost ~]# mozjpegtran -version mozjpeg version 3.3.1 (build 20190331)
最後にコマンドを入力してバージョン情報が出力されればインストールは完了です。
MozJPEGの使い方
jpegtran
基本的にはjpegtranのオプションと変わりません。詳細はこちらの記事に書いています。
MozJPEGでは比率縮小するscaleオプションと指定位置をグレーアウトするwipeオプションが無くなっており、ベースラインで出力するrevertオプションとプログレッシブスキャンによる最適化を無効にするfastcrushオプションが追加されています。
jpegtran -revert -outfile 出力ファイル名 ファイル名 jpegtran -fastcrush -outfile 出力ファイル名 ファイル名
MozJPEGの性能テスト
元となる画像は幅800pxにリサイズ後、本家jpegtranに-copy noneと-optimizeオプションを付けて出力したものです。
その画像に、MozJPEG版jpegtranで同じオプションを使って出力しました。
本家jpegtran(511KB)
MozJPEG版jpegtran(485KB)
511KB→485KBとなり、約5.09%の容量削減となりました。
見た目では違いは全くわかりません。
一応、本家jpegtranを通さず直接MozJPEG版jpegtranを実行した場合でも結果は変わりませんでした。
さいごに
以上がMozJPEGのインストール方法と使い方になります。
少し試しただけですが、普通にjpegtranを使うよりもMozJPEGを通した方が良さそうな感じですね。
画像を比較して見ても差を感じさせませんでした。
libjpegなどが事前にインストールされている場合、コマンド名が被ってしまったりとインストール方法に一癖ありますが、そこまで難しくないので問題ないかと思います。
MozJPEG、興味がある人は一度触ってみてはいかがでしょうか。
コメント