はじめに
ちょっと使いたい要件があったのでpngquant入れてpng圧縮してみるメモ
アジェンダ
- pngquantとは
- いれてみる
- つかってみる
1. pngquantとは
これは参考サイトまんま引用させていただきます
png形式の画像ファイルを圧縮するためのコマンドラインから使用するツールです。
圧縮の方法としては24/32-bitのフルカラーのpngファイルを256色以下に減色し8-bitのインデックスカラーに変換することで圧縮を行います。
参考:pngquantでPNG圧縮
2. いれてみる
入れた環境
$ cat /etc/redhat-release CentOS release 6.6 (Final)
いれる
$ cd /usr/local/src/ $ sudo git clone git://github.com/pornel/pngquant.git $ sudo make $ sudo make install ※ 一応はいったことを確認 $ pngquant --version 2.4.1 (April 2015)
makeでエラーの場合
下記のようなエラーが出たらメッセージに書いてある通り素直にlibpngを入れます。
$ sudo make ./configure Compiler: gcc Debug: no SSE: yes OpenMP: no libpng: error ... not found (try: `apt-get install libpng-dev` or `yum install libpng-devel`) make: *** `pngquant.o' に必要なターゲット `config.mk' を make するルールがありません. 中止. $ yum install libpng-devel ※ これでmakeが通る $ sudo make
3. つかってみる
まずは適当に画像を落としてきて圧縮してみます。
落とした画像はこれですね。octcat。
普通につかってみる
※ /tmpにoctcatのpng画像をとってきてみる $ wget https://octodex.github.com/images/original.png -P /tmp $ cd /tmp ※ 圧縮前に容量を確認 $ ls -lh -rw-rw-r-- 1 hoge hoge 50K 4月 30 08:11 2015 original.png ※ 圧縮してみる $ pngquant original.png ※ 圧縮後に容量を確認 $ ls -lh -rw-rw-r-- 1 hoge hoge 20K 5月 19 19:19 2015 original-fs8.png -rw-rw-r-- 1 hoge hoge 50K 4月 30 08:11 2015 original.png
特に指定しないとデフォルトでファイル名に-fs8
がつきます
ファイル名を変えずに圧縮
ファイル名を変えずに圧縮するには--ext
オプションと--force
オプションを指定します
※ 圧縮前に容量を確認 $ ls -lh -rw-rw-r-- 1 hoge hoge 50K 4月 30 08:11 2015 original.png ※ ファイル名を変えずに圧縮 $ pngquant --ext .png --force original.png ※ 圧縮後に容量を確認 $ ls -lh -rw-rw-r-- 1 hoge hoge 20K 5月 19 19:31 2015 original.png
一括指定
※ ワイルドカード(*)で指定 $ pngquant --ext .png --force *.png または ※ スペースで区切って指定 $ pngquant --ext .png --force original1.png original2.png original3.png ※ もちろんディレクトリで指定も可能 $ pngquant --ext .png --force /tmp/img/*.png
png以外を指定するとエラー
補足ですがそのままpng以外を指定するとエラーになります
$ pngquant original.jpg error: Not a PNG file (libpng failed) error: cannot decode image original.jpg
おわり
入れるのも使うのもかなり簡単なので、自前でスクリプト書いたりgruntと組み合わせるのも簡単そうです\(^o^)/