Windows10で画像ファイルをコマンドラインツールで軽量化する方法

Windows10で画像ファイルをコマンドラインツールで軽量化する方法

画像ファイルを軽量化する場合、最近ではWebサービスを利用しているという方も多いと思いますが、Webサービスだと、大量の画像ファイルを処理したい場合は面倒だったり、アップロードした画像の扱われ方に一抹の不安があるといったことがないでしょうか。

かといって、PCに軽量化ツールを導入した場合でも、一般的なGUI操作のツールでは、ツールを起動して操作しなければならず、これもまた面倒です。

そこで、同じような思いを抱いている方におススメしたいのが、コマンドライン操作が可能な軽量化ツールをPCに導入して処理する方法です。

そこで、ここではWindows10環境で、画像ファイル(JPEG形式、PNG形式)を軽量化するためのコマンドラインツール「ImageMagick」と「pngquant」をバッチファイル化して、画像ファイルをドラッグ&ドロップでカンタンに軽量化する方法を紹介します。

動作環境

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

ソフトウェア バージョン
Windows10 Pro 64bit 1909
ImageMagick 7.0.9.10
pngquant 2.12.0

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

JPEG形式ファイルを軽量化する場合は、Windows向けのバイナリが提供されているツール「ImageMagick」を利用します。

ImageMagickのダウンロードと配置

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

ここでは「ImageMagick-7.0.9-10-portable-Q16-x64.zip」をダウンロードしますが、32bitOSの場合は「ImageMagick-7.0.9-10-portable-Q16-x86.zip」をダウンロードします。

ImageMagick - Download

Windows10で画像ファイルをコマンドラインツールで軽量化する方法

バッチファイルの作成

次に、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のダウンロードと配置

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

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

pngquant — lossy PNG compressor

Windows10で画像ファイルをコマンドラインツールで軽量化する方法

バッチファイルの作成

次に、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
  )
)

記事が役立ったらシェアしてくれるとうれしいです。

あなたにおすすめのコンテンツ
トップへ戻る