mozjpegでJPEGを一括縮小するバッチファイル

JPEGファイルって画像処理ソフトによって同じ品質値でもずいぶんとファイルサイズに違いがありますよね。

品質を下げればファイルサイズが小さくなるのは当たり前なので、品質を下げずに出来るだけファイルを小さくするソフトはないものかと探していました。

そこでmozjpegという素晴らしく圧縮率の高いコマンドラインツールを見つけたのですが、一括処理するためには自前でバッチファイルを作る必要がありました。

mozjpegとは

Mozillaが開発した圧縮効率の高いJPEGエンコーダーなのですが、これがかなり優秀でして、品質をほとんど劣化させることなくJPEGファイルを更に小さくしてくれるのです。

但し、オープンソースで提供されているため、Windowsで使うにはコンパイルが必要です。

てっとり早く使うには↓このあたりから実行ファイルをダウンロードするのが楽ちんかも。
https://mozjpeg.codelove.de/binaries.html

mozjpegで一括処理するためのバッチファイル

mozjpegをコマンドラインで使い、1つ1つJPEGファイルを変換するのはさすがに骨です。軽くググってみたところ、複数のファイルをドラッグ&ドロップして使うバッチファイル例は見つかったのですが、それだと数に限界※1があるんですね。

そこで、たくさんのJPEGファイルを置いたフォルダをドラッグ&ドロップしてmozjpegで一括圧縮するバッチファイルを作りました。………なんてえらそうに言うような大層なモノじゃないんですけど。まぁメモ代わりってことで。

@echo off
cd /d %1
mkdir "mozjpeg"
for %%A in (*.jpg) do (
echo %%A
"%~dp0cjpeg.exe" -optimize -quality 85 -outfile "mozjpeg\%%A" "%%A"
)
バッチファイル内の変数説明
%1 … ドラッグ&ドロップされたフォルダ名
%%A … フォルダ内の拡張子.jpgのファイル名
%~dp0 … バッチファイルが置かれているフォルダ名

使い方

  1. mozjpegを展開したフォルダに上述のバッチファイルを置く mozjpegのバッチファイル
  2. 圧縮したいJPEGがあるフォルダをバッチファイルへドラッグ&ドロップ

対象フォルダの下にmozjpegというフォルダが作成され、そこに圧縮済のJPEGファイルが作られます。

品質は85に設定してあるので、変更したい場合は -quality 85 の部分を80とか90とかお好きなように。ただし、JPEGの品質100は無駄過ぎるのでやめましょう。無劣化が欲しいならPNGにしたほうが良いです。

2019/5/7追記

mozjpegをWindowsで使うためのバッチファイル