私と別の人物は、ImageMagickコマンドを使用してさまざまな画像操作を実行するバッチファイルを共同で作成しようとしています。
動作するようになり、ハードドライブ上の別の場所に移動することにしました。突然、スクリプトが機能しなくなりました。
「変更された」フォルダが作成されますが、画像の変換は実行されません。コマンドプロンプトから変換コマンドを実行できますが、スクリプトを使用することはできません。
私はコンピューターを切り替えました、そしてしばらくしてそれは再び起こりました!
何が起こったのか分かりません。私はしようとしました:
- 元の場所に戻します
- ITクラウドのロイのアドバイスに従って、コンピューターを再起動します
- ImageMagickを再インストールしました
- IT神に祈った(多くの名前を持っているかもしれない:Gates、Jobs、Thorvald、nullなど)
まったく成功しません!役立つヒントを教えてください!
環境:
Windows764ビット
ImageMagick 6.8.0-6 Q16
バッチファイルの内容は次のとおりです。
@echo off
:: Drag and drop a folder of images on the BAT-file.
:: A
Setlocal enabledelayedexpansion
:: Removes the last slash if given in argument %1
Set "Dir=%~1"
IF "%DIR:~-1%" EQU "\" (Set "Dir=%DIR:~0,-1%")
:: Create the output folder if don't exist
MKDIR ".\modified" 2>NUL
:: Set maximium image height
SET /A "newHeight=780"
:: Set portrate extent width
SET /A "portrateWidth=585"
:: Read all the png and jpg images from the directory
FOR %%f IN ("%dir%\*.tif" "%dir%\*.jpg") DO (
:: Set the variable width to the image width
For /F %%# in ('identify -ping -format "%%[fx:w]" "%%f"') Do (SET /A "width=%%#")
:: Set the variable height to the image height
For /F %%# in ('identify -ping -format "%%[fx:h]" "%%f"') Do (SET /A "height=%%#")
:: Check if the photo is portrate or landscape and run the relavant code
IF !height! LSS !width! (
convert "%%f" -trim -resize x!newHeight! "modified\%%~nf.jpg"
) ELSE (
:: Only resize if height is over 780
IF !height! LSS !newHeight! (
:: Calculation for portrate extent width
SET /A "newWidth=!height! * 3/4"
convert "%%f" -trim -resize x!height! -background blue -gravity center -extent !newWidth!x!height! "modified\%%~nf.jpg"
) ELSE (
convert "%%f" -trim -resize x!newHeight! -background blue -gravity center -extent !portrateWidth!x!newHeight! "modified\%%~nf.jpg"
)
)
)
PAUSE&EXIT