やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

pngquantでPNG画像を圧縮する

ローカルで。

ソースコードのダウンロード

$ git clone git://github.com/pornel/pngquant.git

コンパイル

$ make

インストール

$ make install
mkdir -p '/usr/local/bin'
mkdir -p '/usr/local/share/man/man1'
install -m 0755 -p 'pngquant' '/usr/local/bin/pngquant'
install: 通常ファイル `/usr/local/bin/pngquant' を作成できません: 許可がありません
Makefile:54: recipe for target 'install' failed
make: *** [install] Error 1

失敗。

かわりに、適当にPATHが通っているところにpngquantファイルを配置する。

バージョン確認

$ pngquant --version
2.11.7 (January 2018)

圧縮してみる

まずは適当な画像を入手する。

$ wget https://octodex.github.com/images/original.png -P /tmp/work
...
/tmp/work/original.png 100%[=============================>]  49.57K  --.-KB/s 時間 0.05s  
$ ls -lh
-rw-r--r-- 1 pi pi  50K  32 08:20 original.png
$ pngquant original.png 
$ ls -lh
-rw-r--r-- 1 pi pi  20K  310 19:14 original-fs8.png
-rw-r--r-- 1 pi pi  50K  32 08:20 original.png

50KBが20KBになった。-60%。

比較してみる

ツール サイズ 減率
元ファイル 50KB -
pngquant 20KB -60%
オンラインイメージ最適化ツール 16.9KB -68%。
Compressor.io - optimize and compress JPEG photos and PNG images 11.79KB -77%
オンラインで画像を圧縮。最高の画質および圧縮方式 10KB -80%

PNGでなくWebPという規格があるらしい。Googleが開発したらしく、対応ブラウザはchromeだけ。

ツール サイズ 減率
WEBP変換ツール (jpg、pngとwebpを相互変換) 10.9KB -78% ?

PNGより圧縮率高いと謳っていたが、残念な結果に。圧縮ツールかけたPNGのほうが低い。汎用性を犠牲にしてまで使うほどではないか。(2018-03-11時点)

pngquantが最弱? いいえ最強です

品質を落としてやれば。

$ pngquant --quality 1 --output original.q01.png original.png
quality size 問題
0 2.6KB 全体が白っぽくなり謎
1 7.6KB 一部の色が欠落。
5 9.0KB
10 9.0KB

qualityは0〜100まで指定可能。

0は白っぽくて意味不明な画像になった。まともに見えたのは5から。それでも9.0KB。最強。

ツール サイズ 減率
元ファイル 50KB -
pngquant 20KB -60%
オンラインイメージ最適化ツール 16.9KB -68%。
Compressor.io - optimize and compress JPEG photos and PNG images 11.79KB -77%
オンラインで画像を圧縮。最高の画質および圧縮方式 10KB -80%
pngquant --quality 1 9.0KB -84%

ローカルで処理するから速度も最速。今日からpngquant一択。

参考

TinyPNGで使われているpngquant入れてpng圧縮してみるメモ - for centos