OptiPNGのインストール方法と使い方【PNG画像圧縮】

OptiPNGはPNG画像を最適化して容量を圧縮できるオープンソースソフトウェアです。

http://optipng.sourceforge.net/

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を使ってみてください。

コメント

  1. なこは より:

    参考にさせていただきました。

タイトルとURLをコピーしました