tosumalog~ IT的備忘とパパ的備忘を書き綴ります ~

tosumalog

~ IT的備忘とパパ的備忘を書き綴ります ~

コマンドラインで画像ファイルの圧縮(pngquant)

こんにちは、tosumaです。

今回はコマンドラインでファイルを圧縮する方法をご紹介します。

1.概要

Blogやサイトへ配置する画像を小さくしたい場合にファイルの圧縮を行います。

イメージファイルの圧縮についてはGoogleで検索するとWeb上で簡単に実施できるサービスが幾つかありますが対象のファイル数が多かったり、定期的に発生する作業だったりする場合には手間かと思います。

今回はその作業をコマンドラインで実施する方法をご紹介します。
前提条件として、環境はWindows、ツールとしてはpngquantを使っています。

2.準備

2.1.pngquantのインストール

WIndowsでは標準でコマンドラインによる画像圧縮が難しいので便利なpngquantというツールを使用します。

pngquantはコマンドラインベースで画像ファイルの圧縮が可能なツールです、圧縮は減色などでファイルのサイズを小さくする手法ですね。やり過ぎたりしない限り、正直違いはわからないレベルです。

こちらのツールの良いところとしてはコマンドラインに対応している所は勿論、お手軽かつ圧縮率の高さですね。

以下からダウンロードを行います。
pngquant — lossy PNG compressor


以下赤枠の最新のものを使えば良いと思います。
(Windows用なのでMacなど別のOSの場合は合わせて選択します)


ダウンロードできたらファイルを解凍します。


解凍すると以下の構成になっています。


パスを通したいので解凍したフォルダを移動します。
(この例だと C:\Program Files に移動)


スタートメニュー>設定>システム>バージョン情報の中の「システムの詳細設定」を選択します。


システムのプロパティ内の「環境変数(N)...」を選択。


システム環境変数(S)内の「Path」を選択した状態で編集ボタンを選択。


「新規」を選択し、追加された枠に配置したフォルダのパスを入力します。
入力後、下の「OK」ボタンを選択します。

※ここまで開いた画面は全部閉じてOKです


セットアップが終わったので起動確認してみましょう。
コマンドプロンプトはスタートメニューを開いて、「cmd」と打ち込むと表示されます。


コマンドプロンプトで「pngquant」と打ち込みます。
以下のように何か出たらOKです、パスが通ってますね。


これで準備は完了です。

2.2.ファイルの縮小のプログラム構文

ファイルのサイズを圧縮する場合は以下のような記述になります。

rem 圧縮処理
pngquant -f --ext <圧縮後に付与する名前>.png <元ファイル.png>

※「-f」は既存ファイルがあった場合に警告せずに上書きオプション
※「-ext」は「.png 」だけ指定すると既存ファイルに上書きされます

2.3.プログラム例

以下は具体的なプログラムの例です。

rem リサイズ処理
pngquant -f --ext _s.png "C:\Work\sample.png"

指定したフォルダを確認するとファイルが出力されています。
プロパティから圧縮されていることが確認可能です。

2.4.ディレクトリ(フォルダ)内の画像全てを対象とする場合

フォルダに含まれる画像を一括で圧縮掛けたい場合は以下のような記述になります。
for文で拡張子指定するなどで対象を特定して順に処理する感じですね。

@echo off
REM 処理対象のフォルダへ移動
cd c:\work
REM 圧縮処理
for %%f in (*.png) do (
  pngquant -f --ext _s.png "%%f"
)

上記はworkフォルダの配下にある.pngファイルを対象に一括で圧縮を掛けています。
上記例では処理を個別に入れられるようにFor文を使っていますが
特にそういった要件も無いのであれば以下のような書き方で一発で圧縮可能です。

pngquant -f --ext _s.png *.png



コマンドラインで実施できたら何かと便利ですよね。
本記事が何かしらの参考になれば幸いです。

それでは皆さんも良いテクニカルライフを!!


お読み頂き有難うございました。