Pull to refresh

Небольшой, но полезный скрипт пакетной обработки фото с помощью ImageMagic

Reading time2 min
Views3.3K
Продолжаю делиться своими наработками в области shell программинга. На сей раз это небольшой скрипт пакетной обработки JPG картинок. Умеет не очень много, но именно то, что надо, а именно:
* Ресайз фоток
* Изменение степени сжатия
* Наложение вотермарка (с помощью composite)

Не херит 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!'
Tags:
Hubs:
+6
Comments3

Articles

Change theme settings