pngquantを使って画像圧縮を効率化する。

画像圧縮を効率化できるソフトpngquantの概要や使い方を書いておきます。

※この記事ではWindowsでの使い方について書きますがMacでも使えます。

pngquantを使おうと思った経緯

pngquant以外にも画像圧縮系のソフト、サービスはいろいろあります。たぶん有名なのは、 TinyPNG – Compress PNG images while preserving transparency で、こちらはウェブサービスとして展開されていて、画像ファイルをドラッグ&ドロップすると画像を圧縮してくれるというサービス。わたしもこのサイトを使っていました。

それで、TinyPNGはWordPressのプラグインとしても使えて、名前は「Compress JPEG & PNG Images」という名前で提供されています。
Compress JPEG & PNG images

※このあたりの名前が違う理由については重要じゃないので省略します。 | Compress JPEG & PNG Imagesを使うとWordPressの画像アップロード時に画像圧縮が完全自動で行われるようですが気がすすまず、ウェブサービスのほうで画像を圧縮をしていました。その理由は会員登録が必要なためでした。あと月に500枚までしか画像圧縮をできないそうです。(十分かとは思いますが)

そこで代替案としてあがったのがpngquantです。

pngquantを使う準備

pngquantを入手する。ダウンロードする

pngquantは下記で入手できます。

たくさんソフトがありますが、Binary for Windowsを選びます。(※ただほかにもいろいろソフトがありますのでそちらのほうが肌に合う方もいるかもしれません。)今回はとりあえずWindowsのコマンドラインで使用するpngquantを選びました。
pngquant download

pngquantの中身を確認

ダウンロードしたら解凍して、中身を確認します。pngquantの中身は以下のようになっていました。バッチファイルに画像をドラッグ&ドロップするだけで勝手に圧縮をしてくれます。
pngquant screenshot

ドラッグ&ドロップでも画像を圧縮してくれますが、それだとTinyPNGウェブサービスをつかっているときとやっていることが変わらないので、コマンドラインを利用して、画像圧縮できるようにします。

環境変数「Path」にpngquantを設定する。

pngquant.exeが入っているフォルダにパスを通します。「パスを通すとは」環境変数の「Path」に実行ファイルがあるパスを設定することをいいます。こうすることによってコマンドラインから実行ファイルを実行できるようになります。パスの通し方は以下を参考。

  1. コントロールパネルを開き、システムを選択します(大きいアイコンの状態)
  2. システムの詳細設定を選択し、詳細設定タブにある
    環境変数を選択します。
  3. そこにPathという変数があるので、pngquant.exeがあるパスを新規追加します。

pngquantを使う方法

さきほどはpngquantのパスを通しました。コマンドラインツールを立ち上げると、pngquantというコマンドを使えるようになります。windowsにはコマンドプロンプトとPowerShell、2つのコマンドラインツールが入っているかと思いますが、どっちをつかっても構いません。

基本的な使い方としては

pngquant *png

たったこれだけです。これで圧縮された画像が新に作成されます。しかし新たに画像を作成せず元画像の上書きをしたかったり、圧縮のスピードを変更したり、圧縮画像のクオリティを変更したりするには、オプションや他のコマンドも組み合わせる必要があります。

※基本的な使い方は英語になりますが、ダウンロードしたzipフォルダにReadme.txtが同封されています。

pngquantで使えるコマンドの簡単な説明

コマンド説明
pngquantpngquantを使うためのコマンド
–ext .png軽量化後の画像ファイルの拡張子の指定
–force軽量化後の画像ファイルの上書きを指定する
*.png軽量化するファイルの選択
ワイルドカードで.pngファイルをすべて指定している

pngquantで使えるオプション

コマンド(オプション)説明
–quality min-max0から100の間で画質指定
–spedd N, -sN軽量化にかかる時間を指定。デフォルトは3

1から10で1だと遅く10だと速い

結局どのコマンド使えばいいのよ?

以下のコマンドでよいのではないでしょうか?

pngquant -f --ext .png *png

このコマンドは単に元画像を圧縮した画像で上書きするだけのコマンドになります。とくにクオリティ等のオプション等は指定していません。

画像圧縮を完全自動にするには

画像圧縮を完全自動にするにはフォルダ監視ソフトを使うと実現することができるかと思いますが確認まではやっていません。おそらくフォルダ監視ソフトを使わなくても簡単なバッチで行けそうな気もしますがそれも確認はしていません。Macの場合だとAutomatorというワークフロー構築ソフトを使うことで画像圧縮を完全自動化することができるようです。

まとめ

いままでTinyPngにポチポチドラッグ&ドロップしていましたが、pngquantを使うことで大幅に労力を削減することができそうです。

レンタル―サーバー会社一覧


Warning: Undefined array key "thumbnail_url" in /home/users/1/boy.jp-rolpop/web/skc/wp-content/themes/godios/inc/schema-org.php on line 49

Warning: Undefined array key "thumbnail_url" in /home/users/1/boy.jp-rolpop/web/skc/wp-content/themes/godios/inc/schema-org.php on line 78