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!'







All Articles