ImageMagicを使用した小さくても便利なバッチ写真スクリプト

シェルプログラミングの分野でのベストプラクティスを引き続き共有します。 今回は、JPG画像を処理するための小さなバッチスクリプトです。 それほどではないが、まさに必要なもの、すなわち:
*写真のサイズを変更する
*圧縮率の変更
*透かしオーバーレイ(コンポジットを使用)

EXIF情報を取得しないでください(jheadが必要です)。 これにはいくつかのパラメーターがあり、その説明はヘルプで入手できます(-hスイッチ)

そうでなければ、すべてが単純ですが、時には単純なことをするのは簡単です:)だから誰かがスクリプトを役に立つと思うことを願っています。



#!/bin/bash
DIR='.'
WATERMARK=""
TARGET_DIR='small'
RESIZE=2048
QUALITY=85

while getopts ":s:t:w:r:q:h" optname
do
case $optname in
"s")
DIR="$OPTARG"
DIR=${DIR%/}
;;
"t")
TARGET_DIR="$OPTARG"
;;
"w")
WATERMARK="$OPTARG"
;;
"r")
RESIZE="$OPTARG"
;;
"q")
QUALITY="$OPTARG"
;;
"h")
echo "h - help"
echo "s - source dir"
echo "t - target dir"
echo "w - watermark image path"
echo "r - resize to width or height"
echo "q - quality"
exit 0;
;;
*)
echo "Unknown parameter or option error with option - $OPTARG"
exit 1;
;;
esac
done

FILES=$(find $DIR -type f -name '*.jpg' -or -name '*.JPG' -exec basename '{}' \;)
mkdir ${TARGET_DIR}

for FILE in $FILES
do
echo "Converting $FILE..."
convert "${DIR}/${FILE}" -resize $RESIZE -quality $QUALITY "${TARGET_DIR}/${FILE}"
if [ ! -n $WATERMARK ];
then
composite -gravity southeast -dissolve 75 $WATERMARK "${TARGET_DIR}/${FILE}" "${TARGET_DIR}/${FILE}"
fi
jhead -te "${DIR}/${FILE}" "${TARGET_DIR}/${FILE}"
done

echo 'Everything is done!'

Source: https://habr.com/ru/post/J52361/


All Articles