1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Imagemagickを使ってサブディレクトリを含む特定フォルダ直下の画像を一括リサイズした

Last updated at Posted at 2021-07-04

タイトルの通りです。

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

1
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?