WindowsでJPEG/PNG形式の画像を一括で軽量化する方法

WindowsでJPEG/PNG形式の画像を一括で軽量化する方法

Windows環境で、たくさんの画像ファイルを一括で軽量化したい場合、Webサービスを使った方法や、専用ツールをパソコンにインストールするといった方法などがありますが、コマンドラインツールを使った方法もおすすめです。

そこでここでは、Windows 10でJPEG形式やPNG形式の画像ファイルをコマンドラインツールで一括軽量化する方法を紹介します。

この記事は、以下の環境で実行した結果を基にしています。他のエディションやバージョンでは、動作結果が異なる場合があることをご了承ください。

ソフトウェアバージョン
Windows 10 Pro 64bit1909
ImageMagick7.0.9.10
pngquant2.12.0

JPEGファイルを軽量化する

JPEG形式の画像ファイルを軽量化する場合は、コマンドで画像編集できるツール「ImageMagick」がおすすめです。

ImageMagickのインストール方法については、以下の記事をご覧ください。

Windowsでコマンド操作で画像ファイルを加工するならImageMagick
ここでは、Windowsでコマンドラインで画像ファイルの加工処理(リサイズ、切り取り、形式変換)ができるおすすめアプリ「ImageMagick」を紹介します。

バッチファイルの作成

次に、JPEGファイルを軽量化する処理を記述したバッチファイルを作成します。バッチファイルの内容は次のとおりです。

@echo off

set fpath=<ここにImageMagickを配置したフォルダーへのフルパスを入力します。>

for %%A in (%*) do (
  if /i %%~xA ==.jpg (
    echo %%~nxAを軽量化中
    %fpath%convert.exe %%A -verbose -sampling-factor 4:2:0 -strip -quality 80 -interlace JPEG -colorspace sRGB %%~dpnA_joptim.jpg
  )
)

上のバッチファイルでは、ファイルの拡張子が「jpg」の場合に、元のJPEG形式ファイルと同じフォルダーに、名前を変えて軽量化したファイルを生成しています。

なお、convert.exeで利用できるオプションについては、以下のWebページを参考にして設定しています。

画像を最適化する  |  PageSpeed Insights  |  Google Developers

作成したバッチファイルは任意の場所に保存して、バッチファイルのショートカットをデスクトップなどの使いやすい場所に作成しておきます。

動作確認

作成したバッチファイルでJPEGファイルを軽量化するときは、作成したバッチファイルのショートカットに軽量化したいJPEGファイルをドラッグ&ドロップします。

複数ファイルをまとめて処理したいときは、それらのファイルをあらかじめ同一フォルダーに格納してから、バッチファイルのショートカットにドラッグ&ドロップします。

PNGファイルを軽量化する

PNG形式の画像ファイルを軽量化する場合は、PNG形式ファイルを軽量化してくれるコマンドラインツール「pngquant」がおすすめです。

pngquantのダウンロードと配置

pngquantは、以下の公式サイトからツールをダウンロードし、ZIPファイルを展開して管理しやすい場所に配置します。

なお、本記事執筆時点のバージョンは「2.12.0」です。

pngquant — lossy PNG compressor

WindowsでJPEG/PNG形式の画像を一括で軽量化する方法

バッチファイルの作成

次に、PNGファイルを軽量化する処理を記述したバッチファイルを作成します。バッチファイルの内容は次のとおりです。

@echo off

set fpath=<ここにpngquantを配置したフォルダーへのフルパスを入力します。>

for %%A in (%*) do (
  if /i %%~xA ==.png (
    echo %%~nxAを軽量化中
    "%fpath%pngquant.exe" --verbose --strip --speed=1 --quality=50-90 --ext "_poptim.png" %%A
  )
)

上のバッチファイルでは、ファイルの拡張子が「png」の場合に、元のPNG形式ファイルと同じフォルダーに、名前を変えて軽量化したファイルを生成します。

なお、pngquant.exeのオプションについては「pngquant.exe -h」コマンドを参考にして設定しています。

> pngquant.exe -h
pngquant, 2.12.0 (January 2018), by Kornel Lesinski, Greg Roelofs.
   Color profiles are supported via Little CMS. Using libpng 1.6.35.

usage:  pngquant [options] [ncolors] -- pngfile [pngfile ...]
        pngquant [options] [ncolors] - >stdout <stdin

options:
  --force           overwrite existing output files (synonym: -f)
  --skip-if-larger  only save converted files if they're smaller than original
  --output file     destination file path to use instead of --ext (synonym: -o)
  --ext new.png     set custom suffix/extension for output filenames
  --quality min-max don't save below min, use fewer colors below max (0-100)
  --speed N         speed/quality trade-off. 1=slow, 3=default, 11=fast & rough
  --nofs            disable Floyd-Steinberg dithering
  --posterize N     output lower-precision color (e.g. for ARGB4444 output)
  --strip           remove optional metadata (default on Mac)
  --verbose         print status messages (synonym: -v)

作成したバッチファイルは任意の場所に保存して、バッチファイルのショートカットをデスクトップなどの使いやすい場所に作成しておきます。

動作確認

作成したバッチファイルでPNGファイルを軽量化するときは、作成したバッチファイルのショートカットに軽量化したいPNGファイルをドラッグ&ドロップします。

複数ファイルをまとめて処理したいときは、それらのファイルをあらかじめ同一フォルダーに格納してから、バッチファイルのショートカットにドラッグ&ドロップします。

Memo

画像ファイルを格納しているフォルダー名に日本語が含まれていると、処理エラーとなるのでお気を付けください。

あとがき

ここで紹介したバッチファイルをすべてつなげて以下のようにすれば、ファイルの拡張子に応じた画像ファイルの軽量化を自動化できます。

@echo off

set fpath=<ここにImageMagickを配置したフォルダーへのフルパスを入力します。>
set ffpath=<ここにpngquantを配置したフォルダーへのフルパスを入力します。>

for %%A in (%*) do (
  if /i %%~xA ==.jpg (
    echo %%~nxAを軽量化中
    %fpath%convert.exe %%A -verbose -sampling-factor 4:2:0 -strip -quality 80 -interlace JPEG -colorspace sRGB %%~dpnA_joptim.jpg
  )
  if /i %%~xA ==.png (
    echo %%~nxAを軽量化中
    "%ffpath%pngquant.exe" --verbose --strip --speed=1 --quality=50-90 --ext "_poptim.png" %%A
  )
)