日本!チャチャチャ!日本!チャチャチャ!
平昌オリンピックに湧いております!
そんな中、今日の内容は、画像の最適化処理について!
いけ!そこだ!ニッポン!画像を最適化しろー!
すみません。オリンピックとは全く無縁の話ですw
さ、本題にいきましょう。
画像の圧縮処理に便利なmozjpegとoptipngを使ってみたいと思います!
私の開発環境はMacなので、Macでの使い方とCentOSでの使い方について。
まず、mozjpegとoptipngについてですが、
名前を見て分かるように、それぞれjpegとpng画像に対して操作を行うツールです。
ま、やってみた方が早いですね。
どちらも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です。
・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のパスを確認しましょう。
といったところで、今日はお開き。お疲れ様でしたー!
ニッポン、頑張れ!
|