[小ネタ] pngquantを使って指定したディレクトリ内のPNG画像のサイズを小さくしてみた
はじめに
モバイルアプリサービス部の中安です。
ちょっとお仕事でサイズの大きなPNG画像をザザザっと圧縮する作業をしてたので、その方法をアウトプットしておきます。
ディレクトリ内のファイルサイズを見る
「ディレクトリ内のどのファイルが大きいのだろう」って調べたいときは ターミナルからこんな感じのコマンドを打ちます
$ cd [対象のディレクトリパス] $ ls -lS
-rwxr-xr-x 1 hoge staff 1661990 3 18 12:00 3.png -rwxr-xr-x 1 hoge staff 1633909 3 18 12:00 4.png -rwxr-xr-x 1 hoge staff 1587992 3 18 12:00 6.png -rwxr-xr-x 1 hoge staff 1480621 3 18 12:00 10.png -rwxr-xr-x 1 hoge staff 1388427 3 18 12:00 5.png -rwxr-xr-x 1 hoge staff 1372824 3 18 12:00 1.png -rwxr-xr-x 1 hoge staff 1365894 3 18 12:00 9.png -rwxr-xr-x 1 hoge staff 1343687 3 18 12:00 7.png -rwxr-xr-x 1 hoge staff 1317381 3 18 12:00 8.png -rwxr-xr-x 1 hoge staff 1274001 3 18 12:00 2.png -rwxr-xr-x 1 hoge staff 1037762 3 18 12:00 12.png -rwxr-xr-x 1 hoge staff 977785 3 18 12:00 13.png -rwxr-xr-x 1 hoge staff 946549 3 18 12:00 15.png -rwxr-xr-x 1 hoge staff 942369 3 18 12:00 11.png -rwxr-xr-x 1 hoge staff 915161 3 18 12:00 14.png
サイズが見える上にサイズ順に並んでくれます。
ディレクトリのサイズを見る
「ディレクトリ自体のサイズはどれくらいだろう」って調べたいときは ターミナルからこんな感じのコマンドを打ちます
$ cd [対象のディレクトリパス] $ du -sh ./
-s
は「中のディレクトリを個別に出さない」-h
は「人に読みやすいサイズで出す」
今回はざっくり見たかったのでこの2つのオプションをつけています
18M ./
18Mあるということだそうな
圧縮
今回は pngquant
というツールを使いました。
インストール
homebrew
を使えばインストールは簡単ですん
$ brew install pngquant
これだけですね。一応、存在確認
$ which pngquant
/usr/local/bin/pngquant
圧縮実行
pngquant
には色々とオプションはありますが、ディレクトリ内のPNGファイルを圧縮したかったので次のようなコマンドを打ちました。
$ cd [対象のディレクトリパス] $ pngquant --ext .png --force --speed 1 --verbose ./*.png
--ext
は、「出力ファイルの拡張子設定」です。デフォルトだとサフィックスが勝手についてしまうとのことです。--force
は、「強制上書き」オプションです。前述の--ext
で元ファイルと同じ拡張子を設定しているので、強制的に上書きする必要がありそうです。--speed 1
は、「速度をとるか品質をとるか」のトレードオフオプションです。1
は品質優先なので、急ぎの方は10
を指定するでもいいかもしれません。--verbose
は、「ターミナル上で状況が見れる」オプションです。このあたりは好みですね
他にもオプションはあるので、下記コマンドで確認してみましょう
$ info pngquant
ということで、コマンドを実行すると、指定したディレクトリ内のPNG画像が次々と圧縮されていきます。
結果
では、結果を見てみます。冒頭に書いたディレクトリ内のファイルサイズを確認するコマンドを打ちます。
$ ls -lS
-rw-r--r-- 1 hoge staff 609669 4 9 12:00 5.png -rw-r--r-- 1 hoge staff 603274 4 9 12:00 3.png -rw-r--r-- 1 hoge staff 602742 4 9 12:00 9.png -rw-r--r-- 1 hoge staff 597543 4 9 12:00 4.png -rw-r--r-- 1 hoge staff 592805 4 9 12:00 1.png -rw-r--r-- 1 hoge staff 575950 4 9 12:00 6.png -rw-r--r-- 1 hoge staff 552611 4 9 12:00 2.png -rw-r--r-- 1 hoge staff 543809 4 9 12:00 10.png -rw-r--r-- 1 hoge staff 533222 4 9 12:00 7.png -rw-r--r-- 1 hoge staff 517770 4 9 12:00 8.png -rw-r--r-- 1 hoge staff 486222 4 9 12:00 12.png -rw-r--r-- 1 hoge staff 426991 4 9 12:00 15.png -rw-r--r-- 1 hoge staff 422055 4 9 12:00 13.png -rw-r--r-- 1 hoge staff 411984 4 9 12:00 11.png -rw-r--r-- 1 hoge staff 375073 4 9 12:00 14.png
ディレクトリのサイズは
$ du -sh ./
7.5M ./
半分以下になりましたね!!
以上です