Windows 10でJPEG/PNG形式ファイルをコマンドで一括軽量化する方法

Windows 10でJPEG/PNG形式ファイルをコマンドで一括軽量化する方法

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

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

動作環境

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

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

JPEG形式ファイルを軽量化する

JPEG形式ファイルを軽量化する場合は、Windowsに対応したコマンドラインツール「ImageMagick」がおすすめです。

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

Windows 10や11で画像ファイルをコマンドで加工するなら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形式ファイルを軽量化するときは、作成したバッチファイルのショートカットに軽量化したいJPEG形式ファイルをドラッグ&ドロップします。

なお、複数ファイルをまとめて処理したいときは、それらのファイルをあらかじめ同一フォルダーに格納してからドラッグ&ドロップしてください。

PNG形式ファイルを軽量化する

PNG形式ファイルを軽量化する場合は、PNG形式ファイルを最適化してくれるWebサービスとして有名な「TinyPNG」でも使われているというツール「pngquant」がおすすめです。

pngquantのダウンロードと配置

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

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

pngquant — lossy PNG compressor

Windows 10で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形式ファイルを軽量化するときは、作成したバッチファイルのショートカットに軽量化したい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
  )
)