mozjpeg/optipngで画像の最適化

日本!チャチャチャ!日本!チャチャチャ!
平昌オリンピックに湧いております!
そんな中、今日の内容は、画像の最適化処理について!
いけ!そこだ!ニッポン!画像を最適化しろー!

すみません。オリンピックとは全く無縁の話ですw

さ、本題にいきましょう。
画像の圧縮処理に便利なmozjpegとoptipngを使ってみたいと思います!
私の開発環境はMacなので、Macでの使い方とCentOSでの使い方について。

まず、mozjpegとoptipngについてですが、
名前を見て分かるように、それぞれjpegとpng画像に対して操作を行うツールです。
ま、やってみた方が早いですね。

◯Mac環境

どちらもhomebrewでいけます。
・mozjpeg

brew install mozjpeg

環境によって、インストール先が変わるかもしれませんが、
/opt/mozjpeg/や/usr/local/opt/mozjpegにインストールされます。

 

・optipng

brew install optipng

インストール先は、恐らく/usr/local/bin/optipngです。

では、実際にターミナルからコマンド実行してみましょう。
任意の画像を用意します。分かりやすいように大きい画像だと良いです。
なければ、ネットで、「サイズ 大きい jpeg」とかで検索すれば出てきますw

実行するコマンドは、以下です。
・mozjpeg

/opt/mozjpeg/bin/cjpeg -optimize -quality 90 test3_before.jpg > test3_after.jpg

コマンドをバラバラに説明すると、
/opt/mozjpeg/bin/cjpeg mozjpegのインストールされてるbin内cjpeg
-optimize 最適化指定
-quality 90 品質指定(例では90)
test3_before.jpg > test3_after.jpg 対象画像 > 最適化後画像

-qualityの指定は、
quality サイズ 時間 圧縮率
84  49451  0.073s 17.5%
90  60599  0.079s 21.5%
95  80572  0.111s 28.6%
100 173504  0.214s 61.5%

mozjpegに関して、詳細は以下サイトによくまとまってます。
Mozilla 製 JPEG エンコーダー「mozjpeg」

 

・optipng

/usr/local/bin/optipng -strip all -out test_after.png test_before.png

コマンドをバラバラに説明すると、
/usr/local/bin/optipng optipngのインストール先
-strip all 最適化指定
-out test_after.png test_before.png -out 対象画像 最適化後画像

といった感じです。
あとは、shellから利用しても良いし、アプリから呼び出しても良いです。
Javaなら、processbuilderでプログラムからコマンドも実行できます。

◯CentOS環境

さ、続いてはCentOSです。
・mozjpeg

yum install nasm
wget https://github.com/mozilla/mozjpeg/releases/download/v3.2/mozjpeg-3.2-release-source.tar.gz
tar xzvf mozjpeg-3.2-release-source.tar.gz
cd mozjpeg
./configure
make
make install

少し面倒なのは、手順が1発ではないことくらいですかね。
1.まず先にnasmをyumでインストールしておきます。(インストール済みであれば不要です)
2.続いて、wgetでmozjpegのソースをダウンロードしてきます。
(バージョンは環境や好みに合わせてお好きなものを)
3.tar xzvfで解凍して、mozjpegフォルダ内に移動し、パッケージをコンパイルして完了です。

 

・optipng

yum install optipng

yumで一発。簡単ですね。

コマンドは、Mac環境で紹介したものと同じです。
mozjpegで、以下のようなエラーが起きた場合、

Unrecognized input file format --- perhaps you need -targa
エラーで、sizeが0の最適化後画像ファイルが作成される

これは、恐らく指定しているmozjpegn/bin/cjpegのパスが通っていないためです。
なので、もう1度、指定しているcjpegのパスを確認しましょう。

といったところで、今日はお開き。お疲れ様でしたー!
ニッポン、頑張れ!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です