ImageMagickでコマンドを実行する単純なbashスクリプトがあります。画像(INFILE - 通常は.tif)を取得してサイズを変更し、結果を保存します(OUTFILE - 通常は.jpg)。
INFILE=/path/'image name.tif'
OUTFILE=/path/'image name.jpg'
echo INFILE="${INFILE}" OUTFILE="${OUTFILE}"
magick -quiet "${INFILE}" \
-filter LanczosRadius \
-distort resize 1600 \
-quality 92 \
"${OUTFILE}"
スクリプト名はMagic-Resize.shです。
このスクリプトを使用して複数の画像を一括処理したいと思います。つまり、複数のINFILESで実行したいのです。例えば。フォルダに100個のイメージがある場合は、各イメージがスクリプトによって一度処理され、各イメージに固有のOUTFILEを作成したいと思います。
私は初めてバッシュに触れました。私は次のようにクラックしました。
INSCRIPT=/path/Magick-Resize.sh
echo INSCRIPT="${INSCRIPT}"
for INFILE in *.tif; do
if [[ "$INFILE" = *-tagged.tif ]]; then
continue # skip output
fi
name=$(basename "$INFILE")-tagged.jpg
echo name="${name}"
"${INSCRIPT}" "$INFILE" > "${name}"
done
ただし、2 つの .tif イメージを含むテスト フォルダーでは、ファイル名 "*.jpg" のイメージのみが出力されます。
誰でもソリューションを提供できますか?
私はミント20.3を使用しています。
ベストアンサー1
スクリプトにはパラメータがなく、INFILE名とOUTFILE名がハードコードされています。
zsh
ここでは代わりに を使用し、bash
次のようにします。
transform()
magick -quiet $1 \
-filter LanczosRadius \
-distort resize 1600 \
-quality 92 \
$2
autoload -Uz zmv
zmv -P transform './(^*-tagged).tif' './$1-tagged.jpg'