#!/bin/bash # Сам текст подписи. Не забудьте поменять! TEXT="Copyright. Hombit Inc." for FILE in "$@" do # Высота фотки HEIGHT=`exiftool -ImageHeight $FILE | perl -pe 's/^.*: //'` # Ширина фотки WIDTH=`exiftool -ImageWidth $FILE | perl -pe 's/^.*: //'` # Подпись должна быть небольшой, по-этому она ориентируется на меньшую сторону фотки MINDIM=`perl -E "use List::Util qw[min]; say min($HEIGHT,$WIDTH)"` # Размер шрифта, коэффициент 5/2 подобран эмпирически. FONTSIZE=$(( $MINDIM / (5/2 * ${#TEXT}) )) # Длина текста в пикселях. Опять же 4/7 подобран эмпирически. TEXTLENGTH=$(( ${#TEXT} * $FONTSIZE * 4/7 )) # Отступ подписи от правого края изображения. HORIND=$(( $MINDIM / 200 )) # Сама команда преобразования. Расшифровка некоторых опций: # -fill — цвет подписи. Установлен белый с непрозрачностью в 15% # -stroke — цвет контура. Для контраста использован чёрный с непрозрачностью в 20% # -strokewidth — толщина контура в пикселях # -monitor показывает прогресс обработки mogrify -pointsize $FONTSIZE \ -fill 'rgba(255,255,255, 0.15)' \ -stroke 'rgba(0,0,0, 0.2)' -strokewidth 3 \ -draw "rotate -90 gravity SouthEast \ text -$TEXTLENGTH,$HORIND '$TEXT'" \ -monitor \ $FILE done exit 0
Для Fedora su -c 'yum install ImageMagick perl-Image-ExifTool' Для Debian/Ubuntu sudo apt-get install imagemagick libimage-exiftool-perlНе забываем сделать файл исполняемым:
chmod +x /path/to/scriptТеперь можно взять любую картинку и применить наш скрипт (осторожно, файл с фотографией перезапишется):
/path/to/script photka.jpgВот примерно то, что мы получим (кликабельно):
/path/to/script *.{jpg,tif}Однако, я предпочитаю сделать тоже самое, но в несколько параллельных потоков, что значительно ускоряет обработку:
ls *.{jpg,tif} | xargs -P4 -iXXX /path/to/script XXXЧисло потоков регулируется параметром «-P» и в данном примере равно четырём, подробности смотрите в man xargs.
P.S. Жду ваших отзывов и рекомендаций по улучшению! Мне самому не нравится строчка с MINDIM, в ней пришлось использовать perl, так как не понял как коротко и лаконично искать минимум двух целых чисел с помощью bash.
Комментариев нет:
Отправить комментарий