JPEG、 PNG、 GIF をまとめて WebP に変換するバッチファイルを作成しました。pngquant による減色処理とメタ情報削除、 さらに Zopfli で再圧縮をおこない PNG ファイル自体の最適化もおこないます。
ダウンロード
ダウンロードした minify-img.zip
を展開すると、 バッチファイルと変換に必要なツールがすべて入っています。
同梱されているツールの詳細は legal
フォルダー内の README.txt
で確認することができます。
- pngquant
https://pngquant.org/ - zopfli-windows
https://github.com/garyzyg/zopfli-windows/releases - WebP
https://developers.google.com/speed/webp/
バッチファイル minify-img.bat
の中身はシンプルです。FOR
文で下位フォルダー全体を走査して、 拡張子 .png
、 .jpg
、 .gif
のファイルに対してそれぞれ処理を行っています。ただし、 .png.webp
、 .jpg.webp
、 .gif.webp
が既に存在する場合は、 それに対応するファイルは処理済みと見なして処理をスキップします。
ファイルサイズが最小になるように処理時間を度外視して最適なパラメーターを指定しています。ファイルサイズよりも処理時間を優先したい場合は、 cwebp.exe
の -z 9
や -m 6
パラメーターの数字を小さくしてみてください。
JPEG の圧縮品質は 75 を指定しています。画像の劣化を抑えたい場合は cwebp.exe
の -q 75
パラメーターの数字を大きくしてみてください。ただし、 品質に 85 よりも大きな値を指定すると出力ファイルサイズが極端に大きくなっていきます。品質を高める場合も 85 を上限として調整することをオススメします。
minify-img.bat@ECHO OFF IF "%~1" == "" ( ECHO NO_ARGUMENTS EXIT /B 1 ) SET DIR=%~1 IF "%DIR:~-1%" NEQ "¥" ( SET DIR=%DIR%¥ ) IF NOT EXIST "%DIR%" ( ECHO NOT_FOUND: %DIR% EXIT /B 2 ) SET PATH=%~dp0;%PATH% FOR /R "%DIR%" %%p IN (*.png) DO ( IF NOT EXIST "%%p.webp" ( pngquant.exe --verbose --force --speed 1 --strip --nofs --output "%%p" "%%p" zopflipng.exe -y "%%p" "%%p" cwebp.exe -v -z 9 "%%p" -o "%%p.webp" ) ) FOR /R "%DIR%" %%j IN (*.jpg) DO ( IF NOT EXIST "%%j.webp" ( cwebp.exe -q 75 -m 6 "%%j" -o "%%j.webp" ) ) FOR /R "%DIR%" %%g IN (*.gif) DO ( IF NOT EXIST "%%g.webp" ( gif2webp.exe -v -min_size "%%g" -o "%%g.webp" ) )
使い方
バッチファイル minify-img.bat
の引数に処理対象のフォルダーを指定します。引数として指定できるのはフォルダーのみです。ファイルを指定した場合は何も処理をしません。
処理対象フォルダーとして C:\temp
を指定する場合は以下のようになります。
コマンドプロンプトC:¥>minify-img.bat C:¥temp C:¥temp¥sample.png: read 74KB file made histogram...15547 colors found selecting colors...2% selecting colors...5% selecting colors...22% selecting colors...38% selecting colors...55% selecting colors...72% selecting colors...75% selecting colors...91% selecting colors...100% moving colormap towards local minimum eliminated opaque tRNS-chunk entries...123 entries transparent mapped image to new colors...MSE=4.898 (Q=83) writing 256-color image as C:¥temp¥sample.png Quantized 1 image. Optimizing C:¥temp¥sample.png Input size: 21779 (21K) Result size: 21088 (20K). Percentage of original: 96.827% Result is smaller Time to read input: 0.023s Saving file 'C:¥temp¥sample.png.webp' Time to encode picture: 1.453s File: C:¥temp¥sample.png Dimension: 288 x 163 Output: 19680 bytes (3.35 bpp) Lossless-ARGB compressed size: 19680 bytes * Header size: 1280 bytes, image data size: 18374 * Lossless features used: PALETTE * Precision Bits: histogram=3 transform=3 cache=1 * Palette size: 256
- ドラッグ・アンド・ドロップ
- コマンドプロンプトを起動せずに、 エクスプローラーで処理したいフォルダーを
minify-img.bat
の上にドラッグ ・ アンド ・ ドロップする方法でも OK です。
これで、 C:\temp
以下のサブフォルダーも対象として .png
、 .jpg
、 .gif
が WebP に変換されます。.jpg
と .gif
についてはオリジナルのファイルがそのまま残りますが、 .png
については pngquant と Zopfli で最適化処理をしてオリジナルファイルを上書きします。ご注意ください。