OptiPNGはPNG画像を最適化して容量を圧縮できるオープンソースソフトウェアです。
BMP・GIF・PNM・TIFFからPNGへ変換・圧縮できたり、細かく最適化の設定を決められたりとかなり高性能なツールになっています。
この記事ではOptiPNGのインストール方法と使い方について詳しく解説していきます。
OptiPNGをインストール
使用したOS
[root@localhost ~]# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core)
インストール手順
gccがない場合はインストールします。
yum install gcc
OptiPNGをダウンロードします。
記事更新時点での最新バージョンは0.7.7です。
wget http://prdownloads.sourceforge.net/optipng/optipng-0.7.7.tar.gz
ダウンロードしたファイルを解凍してディレクトリに移動します。
tar xzvf optipng-0.7.7.tar.gz cd xzvf optipng-0.7.7
コンパイルしてインストールします。
./configure
make
make install
コマンドを入力してバージョン情報が出力されればインストールは完了です。
[root@localhost ~]# optipng -version OptiPNG version 0.7.7 Copyright (C) 2001-2017 Cosmin Truta and the Contributing Authors. This program is open-source software. See LICENSE for more details. Portions of this software are based in part on the work of: Jean-loup Gailly and Mark Adler (zlib) Glenn Randers-Pehrson and the PNG Development Group (libpng) Miyasaka Masaru (BMP support) David Koblas (GIF support) Using libpng version 1.6.34 and zlib version 1.2.11-optipng
OptiPNGの使い方
使用する画像(384KB)
最適化レベルを設定する
optipng -o レベル(0~7) ファイル名
デフォルトの数値は2になっています。
レベルが高くなるほど最適化され容量が圧縮されますが処理に時間がかかります。
最適化レベル1(344KB)
最適化レベル7(342KB)
レベル1で約10%の容量圧縮に成功しています。
レベル7の方はレベル1とあまり差がなく処理に時間がかかっていました。
しかしどちらも元の画像と見た目上の変化はありません。
尚、最適化オプションは以下のように設定されます。
レベル0 -o1 -nx -nz (0 or 1 trials) レベル1 -zc9 -zm8 -zs0 -f0 or -zc9 -zm8 -zs1 -f5 (1 trial) レベル2 -zc9 -zm8 -zs0-3 -f0,5 (8 trials) レベル3 -zc9 -zm8-9 -zs0-3 -f0,5 (16 trials) レベル4 -zc9 -zm8 -zs0-3 -f0-5 (24 trials) レベル5 -zc9 -zm8-9 -zs0-3 -f0-5 (48 trials) レベル6 -zc1-9 -zm8 -zs0-3 -f0-5 (120 trials) レベル7 -zc1-9 -zm8-9 -zs0-3 -f0-5 (240 trials)
冗長モードで実行する
optipng -v ファイル名
ファイル名を指定しなければバージョン情報が表示されます。
実行例
[root@localhost ~]# optipng -v optipng-cat.png OptiPNG version 0.7.7 Copyright (C) 2001-2017 Cosmin Truta and the Contributing Authors. ** Processing: optipng-cat.png 800x400 pixels, 3x8 bits/pixel, RGB Input IDAT size = 351062 bytes Input file size = 351177 bytes Trying: zc = 9 zm = 8 zs = 0 f = 0 IDAT too big zc = 9 zm = 8 zs = 1 f = 0 IDAT too big zc = 1 zm = 8 zs = 2 f = 0 IDAT too big zc = 9 zm = 8 zs = 3 f = 0 IDAT too big zc = 9 zm = 8 zs = 0 f = 5 IDAT too big zc = 9 zm = 8 zs = 1 f = 5 IDAT too big zc = 1 zm = 8 zs = 2 f = 5 IDAT too big zc = 9 zm = 8 zs = 3 f = 5 IDAT too big optipng-cat.png is already optimized. ** Status report 1 file(s) have been processed.
バックアップを保存する
optipng -backup ファイル名 または optipng -keep ファイル名
このオプションを付けて実行すると、使用した画像のファイル名の末尾に「.bak」が付いて保存されます。
付けない場合は元画像が消えてしまうので注意が必要です。
上書き保存する
optipng -clobber ファイル名
同名のファイルが存在しても処理を実行し上書き保存します。
ファイル名を変更せずに-backupオプションを付けて実行を繰り返すとエラーが起きるので、-clobberオプションを付ける必要があります。
Error: Can't back up the existing output file
エラーを修正する
optipng -fix ファイル名
エラーが発生している画像の修正を試みます。
ただし、必ずしもこのオプションで直るわけではありません。
また、最適化によるファイルサイズ削減よりもエラーの修復が優先されます。
エラーがある画像はこのオプションを付けないと処理が実行されません。
強制的にファイルを書き込む
optipng -force ファイル名
ファイルサイズが元の画像よりも大きくなってしまった場合など、通常は処理が中断される状態でも強制的に処理を実行しファイルを書き込みます。
ファイル属性を保存する
optipng -preserve ファイル名
タイムスタンプやアクセス権などのファイル属性を保持します。
クワイエットモードで実行する
optipng -quiet ファイル名 または optipng -silent ファイル名
処理実行時にメッセージを出力しないようにします。
シュミレーションモードで実行する
optipng -simulate ファイル名
このオプションを使用するとファイルは出力せずに最適化を試すことができます。
出力ファイル名を指定する
optipng -out 出力ファイル名 ファイル名
処理した画像のファイル名を指定します。
元の画像と同じファイル名を指定した場合は上書きされます。
このオプションを使用する際は複数の画像を入力することはできません。
出力ディレクトリを指定する
optipng -dir 出力ディレクトリ ファイル名
処理した画像を保存するディレクトリを指定します。
ログを保存する
optipng -log ログファイル名 ファイル名
実行ログを保存します。
ログファイルの拡張子は「.log」でなければなりません。
このオプションは推奨されておらず将来削除される予定です。
オプションスイッチの解析を停止する
optipng -- ファイル名
このオプションを使用すると、「–」以降に付いているオプションは無視するようになります。
例えば、
optipng -- -log test.log -dir /img optipng-cat.png
上記コマンドだとログファイルは生成されませんが、
optipng -log test.log -- -dir /img optipng-cat.png
こちらはログファイルが生成されます。
GIFアニメーションから画像を切り取る
optipng -snip ファイル名
切り取る画像の指定はできません。
一番最初の画像、または一番大きな画像が選ばれます。
メタデータを削除する
optipng -strip <削除するデータ> ファイル名
「all」にすることで全てのメタデータを削除可能です。
最適化オプション
詳細な設定で最適化したい場合は下記のオプションを使用します。
PNGデルタフィルター
optipng -f <0-5> ファイル名
デフォルトは0,5です。
PNGインターレースタイプ
optipng -i <0-1> ファイル名
zlib圧縮レベル
optipng -zc <1~9> ファイル名
デフォルトは9です。
zlibメモリレベル
optipng -zm <1~9> ファイル名
デフォルトは8です。
zlib圧縮ストラテジ
optipng -zs <0-3> ファイル名
デフォルトは0-3です。
zlibウィンドウサイズ
optipng -zw <size(256,512,1k,2k,4k,8k,16k,32k)> ファイル名
IDATレポート作成
optipng -full ファイル名
IDATは画像データそのものが格納されているチャンクのことです。
このオプションを使用すると処理速度が低下する可能性があります。
ビット深度を減少させない
optipng -nb ファイル名
カラータイプを減少させない
optipng -nc ファイル名
パレットを減少させない
optipng -np ファイル名
全て減少させない
optipng -nx ファイル名
このオプションひとつで-nb、-nc、-npが適用されます。
IDATを再コーティングしない
optipng -nz ファイル名
このオプションはPNG画像にのみ適用可能です。
さいごに
OptiPNGはインストールも簡単で最適化も容易、状況に合わせて複雑な設定も可能なのでユーザーのスキルを問わずに使用できるソフトウェアという印象です。
今回使った画像では約10%の削減しかできなかったものの、見た目の劣化が全くなかったので悪くないと思います。
画像によっては2~3割程度の容量削減も可能なようなので、PNG画像を最適化したい人はぜひOptiPNGを使ってみてください。
コメント
参考にさせていただきました。