タイトルの通りです。
TL;DR
Windows環境でのやつです。
Imagemagickをインストールし、コマンドプロンプトを開き、こんなコマンドを叩きましょう。解像度は今回横幅1200pxを最大に指定していますが、そこはお好みで。
for /r %a in (*) do magick mogrify -resize "1200x>" %a
経緯
私が開発に関わったとあるWebサイトにおいて、ユーザーからアップロードされた一部画像の解像度が高解像度すぎてしまい、結果としてサーバーのリソースを圧迫していたりページの表示速度を遅くしていることが判明しました。
ということで、画像のダウンサンプリングをおこなってもシステムに影響が出ないことを確認のうえ、アップロードされている画像のうち一定以上の解像度のものをリサイズすることに。
そのためにいろいろ調べたというアレです。
環境
OS: Windows 10 Pro 64bit
CPU: Ryzen 3400G
RAM: 16GB
世の開発者の皆さんはだいたい開発環境にMacかLinux使ってると思うのですが、私はカーネルいじるの大好きおじさんことWindows信奉者のため。
Mac/Linuxの情報はけっこう世の中に溢れてたので、そちらの方はGoogleへどうぞ。
やったこと
まず、コマンドラインで画像をゴリゴリいじることができる超便利ツール・Imagemagickをインストールします。
https://imagemagick.org/script/download.php
↑
こちらからWindows用のものを落としてきてください。
これでおそらくコマンドプロンプトからmagickコマンドが使えるようになってるはず。なっていなかったら適宜パスを通してください。
あとは、コマンドプロンプトを開いてcdコマンドで画像がたくさん入っているディレクトリまで移動し、
for /r %a in (*) do magick mogrify -resize "1200x>" %a
これを叩きましょう。
for /r %a in (*) do
で、サブディレクトリを含むすべての配下ファイルのパスを変数%aに代入しつつループを回せます。
で、あとはmagick mogrify -resize "1200x>" %a
として、%aに入ってきた画像ファイルが横幅1200pxを超えていた場合、リサイズを走らせることができます。
おわりに
こんなことをしなくても済むように、開発時点で設計はしっかりやりましょう。
参考文献
https://base64.work/so/windows/869189
https://imagemagick.biz/archives/93