lisz-works

プログラミングと興味を貴方に

【Win】画像自動リサイズバッチ

【スポンサーリンク】

カメラを持つ女性

画像を自動リサイズしたい……どうにかできないか……

と色々していましたが、うまくいかず……

改めて調べていたら、見つけました……!

今回はそちらのバッチをちょこっと改造と、それに使うImageMagickというツールで躓いたところについて書いていきます。

準備:ImageMagickのダウンロード

このバッチはImageMagickというツールを使います。
なのでインストールをしてください。

ダウンロードはコチラから行えます。
自身の環境に合わせたものを選択してください!

imagemagick.org

って、今よくよく見て気づいたんだけど、mac版もあるからmacでも同じようにバッチ化できるんじゃ……?

リサイズバッチファイル

コチラの解説にある

qiita.com

このバッチファイルを改造しました。

gist.github.com

コチラを「resize.bat」とか適当な名前で作成してください。

REM # 環境によっては、ImageMagickのコマンドは「magick <cmd>」じゃないと動かない
setlocal enabledelayedexpansion

REM # EXP=拡張子を入れてください
set EXP=png
REM # SIZE=長辺のサイズを入れてください
set SIZE=640

for %%f in (*.%EXP%) do (
  REM 画像の縦幅を取得
  for /f "usebackq tokens=*" %%i in (`magick identify -format '%%h' %%f`) do @set HEIGHT=%%i

  REM 画像の横幅を取得
  for /f "usebackq tokens=*" %%i in (`magick identify -format '%%w' %%f`) do @set WIDTH=%%i
  
  if !HEIGHT! GEQ !WIDTH! (
    REM 縦幅 >= 横幅
    magick convert -resize x%SIZE% %%f %%~nf_resized.%EXP%
  ) else (
    REM 縦幅 < 横幅
    magick convert -resize %SIZE%x %%f %%~nf_resized.%EXP%
  )
)

で、このバッチファイルを、リサイズしたい画像が入っているフォルダに入れて実行!

縦横長い方を、SIZEで指定した長さにそろえてリサイズしてくれます!
pngじゃない拡張子の場合は、EXPにリサイズしたい拡張子をセットしてください!

ちなみに変更内容は

  1. 拡張子の指定を変数で行うようにした
  2. リサイズ後のサイズ指定を変数で行うようにした
  3. ImageMagickコマンドの修正(環境依存?)

の3点です。

環境によっては、「magick 」という記述が全ていらないかもしれません。

それについては続きをご覧ください。

ImageMagickのコマンドが通らない?

ImageMagickのコマンドなんですが、他のサイトなどを参考にしても

  • identify ~
  • convert ~

のように直で書かれているんですが、ぼくの環境だとどうもうまくいかず困っていました。

で、最終的にわかったのが

  • magick identify ~
  • magick convert ~

のように、コマンドの前に「magick 」と付けないと認識してくれないということでした。

環境依存なのか、入れている種類の違いなのか……

よく覚えていないんですが、DLL版を入れたような気がするんですよね。
インストール先のファイル的にもそんな気がするし。

でも今になってネット見ると「DLLじゃに方がいいよ」っていう記事を見かけたんですよね。

だから実はみんなDLLじゃない版を入れていて、そことの差でこの現象が起きているのかなとか、勝手に想像しています。
まぁちゃんと動くからいいんだけど。

macでのリサイズ……

automatorでリサイズする記事を見つけたので、そのうち試そうかと思います。

take1mg.com

といってもImageMagickがmac版もあるみたいなので、そちらにシフトチェンジな可能性もありますが(笑)

あとがき

いかがでしたでしょうか?

これで記事作成の手間が1つ解消ですね。

オートアップローダーとかあれば最高なんだけどな……

はてなフォトライフ、もっと機能向上しませんかね?