みかづきブログ・カスタム

基本的にはちょちょいのほいです。

Macのコマンドラインからpngquantを叩いてpng画像を圧縮する 🖼

Nuxt.jsやNext.jsを使った開発の時は、loaderに任せてしまうので特に気にすることはないのですが、稀に開発環境無しでウェブサイトを作ることがあり、その際、画像の圧縮をどうしたものかなと考えることになります。

少数であれば、 ImageAlphaImageOptim を使ってコツコツ圧縮しても良いのですが、面倒なので、コマンドラインから一括で指定したいものです。

そんなこときは、

find . -name '*.png' | awk -F '.png' '{print "/Applications/ImageAlpha.app/Contents/MacOS/pngquant 64 " $1 ".png && mv " $1 "-fs8.png " $1 ".png && open -a /Applications/ImageOptim.app " $1 ".png" }' | sh

を実行すれば、実行したディレクトリ以下のpng画像を64色に減色し、メタデータを削除しまくることができます。
ImageAlphaが内部的にpngquantを使っており、そのパスを指定することでpngquantをコマンドラインから叩いているのです。これは楽だ。

以前は、

find . -name '*.png' | awk -F '.png' '{print "/Applications/ImageAlpha.app/Contents/Resources/pngquant 64 " $1 ".png && mv " $1 "-fs8.png " $1 ".png && open -a /Applications/ImageOptim.app " $1 ".png" }' | sh

というコマンドを使っていたのですが、久しぶりに実行したらpngquestの位置が変わったようで、実態にあわせてパスを変更しました。
具体的には、ResourcesMacOS に変更されています。なのでMacでしか動かないはずです。