ImageMagickで画像をリサイズ&コンテキストメニューに追加

蔵書管理で使う本の表紙画像を長辺250ピクセルとしてリサイズする用途のもの。

スキャンしたり拾ってきたりした画像は大概求めるよりもサイズが大きくてね。

以前はIrFanViewを開いてはポチポチと縮小していたものだが、
ImageMagickならコマンドラインから呼び出せると聞いたので、
蔵書登録作業における部分最適化を試みたという次第。

リサイズルーチンは下記を参考に、やや追記加えた感じで使用中。

長辺の長さを一定にして画像を一括リサイズするbatを書いた - Qiita

同じディレクトリのpng画像を長辺900pxにリサイズするbatファイル(http://qiita.com/smison/items/d32eb72be807e099dfa0) · GitHub

バッチ本体を配置するドライブとかフォルダは任意で対応を任すところ。
※実行にはImageMagickのインストールが必要


ImageMagickで画像をリサイズ

resize.bat

@echo off
REM Image Magick - 画像を長辺に合わせてリサイズ
REM version 0.01.2
REM 2016/09/10
REM by.REGEKATSU

REM 変換後の長辺サイズを設定
set RESIZE=250

REM 画像名のサフィックスを設定
set SUFFIX=_resized

REM 出力画像形式オプション
REM 0=元と同じ画像形式, 1=全て指定した画像形式
set OUT_OPTION=1

REM 出力画像形式の指定
set OUT_EXT=.png

REM 引数の分だけ処理を実行
:loop
if "%~1"=="" goto end

REM 出力画像形式が元画像と同じ場合
if %OUT_OPTION%==0 set OUT_EXT=%~x1

REM 入力画像の拡張子を小文字に変換
set IN_EXT=%~x1
for %%i in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do call set IN_EXT=%%IN_EXT:%%i=%%i%%

REM 入力が画像であるか確認
set IS_TRUE=FALSE
if %IN_EXT%==.bmp set IS_TRUE=TRUE
if %IN_EXT%==.tif set IS_TRUE=TRUE
if %IN_EXT%==.tiff set IS_TRUE=TRUE
if %IN_EXT%==.jpg set IS_TRUE=TRUE
if %IN_EXT%==.jpeg set IS_TRUE=TRUE
if %IN_EXT%==.gif set IS_TRUE=TRUE
if %IN_EXT%==.png set IS_TRUE=TRUE

if %IS_TRUE%==TRUE (
setlocal enabledelayedexpansion

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

  REM 画像の横幅を取得
  for /f "usebackq tokens=*" %%i in (`identify -format '%%w' %1`) do @set WIDTH=%%i

  REM 幅情報に含まれる前後の「'」を除去
  @set WIDTH=!WIDTH:~1,-1!
  @set HEIGHT=!HEIGHT:~1,-1!

  if !HEIGHT! GEQ !WIDTH! (
    REM 縦幅>=横幅
    convert -resize x%RESIZE% %1 "%~dpn1%SUFFIX%%OUT_EXT%"
  ) else (
    REM 縦幅<横幅
    convert -resize %RESIZE%x %1 "%~dpn1%SUFFIX%%OUT_EXT%"
  )

REM 処理を行った画像情報を表示
echo %1%~n1%SUFFIX%%OUT_EXT%、長辺 %RESIZE%px にリサイズ
)

REM 次の引数へシフト
shift
goto loop

:end


コンテキストメニューに追加
レジストリはresize.batが以下パスにあるとした場合のもの
C:\regekatsu\utility\ImageMagick\resize.bat

ImageMagickで画像をリサイズ.reg

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell]

[HKEY_CLASSES_ROOT\*\shell\imagemagickresize]
@="ImageMagickで画像をリサイズ(&I)"

[HKEY_CLASSES_ROOT\*\shell\imagemagickresize\command]
@="\"C:\\regekatsu\\utility\\ImageMagick\\resize.bat\" \"%1\""