Нетиповий скрипт

Огляд

У засобі керування пакетною обробкою можна налаштувати робочий процес за допомогою додавання додатка Нетиповий скрипт, який призначено для запуску скрипту і обробки ваших зображень зовнішнім інструментом, зокрема ImageMagick або ExifTool.

У категорії Нетипові інструменти списку Основні інструменти ви можете скористатися інструментом Нетиповий скрипт. Цей інструмент створено для виконання початкового коду для скрипту командної оболонки, який може викликати одну або декілька програм для кожного з записів з черги обробки. Скрипт оболонки має бути написано користувачем у межах додатка. До таких скриптів можна включати набір змінних середовища, які визначають назви файлів, та метадані декількох типів.

Керування чергою обробки з нетиповим скриптом у робочому процесі

Інструмент надає доступ до таких параметрів:

  • Тип зображення-результату: це значення надає змогу налаштувати очікуваний тип формату зображення, яким слід скористатися для виведення даних у вашому скрипті. Типовим є Той самий, що і вхідний, але ви можете встановити тип JPEG, PNG або TIFF. Зверніть увагу, що JPEG є форматом зберігання даних з втратою якості, у якому передбачено глибину кольорів лише 8 бітів і не передбачено підтримки прозорості.

  • Скрипт оболонки: за допомогою цього поля для редагування тексту можна ввести початковий код вашого скрипту оболонки. У Linux і macOS передбачено підтримку скриптів Bash. У Windows передбачено підтримку пакетних скриптів.

У наведеному нижче списку ви можете знайти ключові слова, якими можна скористатися у коді скрипту. Інструмент замінить усі записи ключових слів у скрипті під час роботи до виконання команди у командній оболонці. Зверніть увагу на те, що при написанні ключових слів слід враховувати регістр символів.

  • $INPUT буде замінено назвою вхідного файла робочого процесу (із екрануванням спеціальних символів).

  • $OUTPUT буде замінено назвою вихідного файла робочого процесу (із екрануванням спеціальних символів).

Важливо

На $OUTPUT завжди має бути новий файл. Для програм-скриптів, які не створюють нового файла (наприклад, змінюють метадані за допомогою ExifTool) вам слід спочатку скопіювати $INPUT до $OUTPUT за допомогою команди, відповідної операційній системі, а потім вносити зміни до $OUTPUT.

Нижче наведено змінні середовища, якими ви можете скористатися у вашому скрипті:

  • TITLE: для використання запису Заголовок digiKam.

  • COMMENTS: для використання запису Підпис digiKam.

  • COLORLABEL: для використання запису Кольорова мітка digiKam.

  • PICKLABEL: для використання запису Впорядкувальна мітка digiKam.

  • RATING: для використання запису Оцінка digiKam.

  • TAGSPATH: для використання запису Мітки digiKam.

Значення усіх цих властивостей буде встановлено на основі властивостей зображення, які зберігаються у базі даних digiKam.

Примітка

У Linux і macOS доступ до змінних середовища у скрипті можна здійснювати за допомогою використання префікса $ назв змінних (наприклад $INPUT). Інтерпретатором, який буде використано для запуску скрипту, є /bin/bash.

У Windows доступ до змінних середовища у скрипті можна здійснювати за допомогою використання префікса і суфікса % назв змінних (наприклад %INPUT%). Інтерпретатором, який буде використано для запуску скрипту, є cmd.exe.

Повернуте значення

Типово, скрипт Bash у Linux і macOS повертає 0, якщо його виконано успішно, і ціле число у діапазоні 1-255 в інших випадках. Скористайтеся інструкцією exit < error_code >, щоб передати повернуте значення до робочого процесу.

У Windows пакетний скрипт повертає 0 при успішному виконанні та інше значення для помилки, але значенням є ціле число зі знаком, отже, можливе повернуте від’ємне значення. Скористайтеся інструкцією EXIT /B < error_code >, щоб передати повернуте значення до робочого процесу.

Обробку повернутого вашим скриптом значення виконує засіб керування пакетною чергою. Якщо повернуто нуль, робочий процес продовжується у штатному режимі, інакше робочий процес буде припинено, а засіб керування пакетною чергою припинить обробку команд.

Приклади

Технічний зразок

Перший приклад, який наведено нижче, …не робить нічого особливого. Він виводить до консолі назви вхідного і вихідного файлів та властивості запису, які передано із засобу керування пакетною обробкою до скрипту, і копіює вхідний файл до вихідного файла (цей крок є обов’язковим, оскільки засіб керування пакетною чергою повертатиме помилку, якщо файла призначення не існує). Скрипт повертає значення з команди копіювання файла. Його буде оброблено засобом керування пакетною чергою з метою перевірки коректності робочого процесу.

echo "INPUT FILE: $INPUT"
echo "OUTPUT FILE: $OUTPUT"

echo "TITLE: $TITLE"
echo "COMMENT: $COMMENT"
echo "COLORLABEL: $COLORLABEL"
echo "PICKLABEL: $PICKLABEL"
echo "RATING: $RATING"
echo "TAGSPATH: $TAGSPATH"

cp "$INPUT" "$OUTPUT"
exit $?

Якщо digiKam було запущено з термінала із увімкненим діагностичним трасуванням на сторінці Параметри/Різне/Система, ви побачите щось таке:

digikam.general: Action Thread run  1  new jobs
digikam.general: Tool : index=  1  :: name=  "UserScript"  :: group=  Digikam::BatchTool::CustomTool  :: wurl=  QUrl("file:///mnt/data/Images/SALAGOU")
digikam.general: path:  "/mnt/data/Images/SALAGOU/BatchTool-EpEjEz-9e1c7a12.digikamtempfile.JPG"
digikam.general: Tool:        "User Shell Script"
digikam.general: Input url:   QUrl("file:///mnt/data/Images/SALAGOU/DSC08833.JPG")
digikam.general: Output url:  QUrl("file:///mnt/data/Images/SALAGOU/BatchTool-EpEjEz-9e1c7a12.digikamtempfile.JPG")
digikam.dplugin.bqm: Script stdout "INPUT FILE: /mnt/data/Images/SALAGOU/DSC08833.JPG\nOUTPUT FILE: /mnt/data/Images/SALAGOU/BatchTool-EpEjEz-9e1c7a12.digikamtempfile.JPG\nTITLE: Salagou Trip\nCOMMENT: \nCOLORLABEL: 5\nPICKLABEL: 3\nRATING: 3\nTAGSPATH: Places;Places/France;Places/France/Salagou Lake\n"
digikam.dplugin.bqm: Script stderr ""
digikam.dplugin.bqm: Script exit code: 0

Дані, які digiKam бере з бази даних:

  • Оброблюваний запис /mnt/data/Images/SALAGOU/DSC08833.JPG.

  • Назва файла призначення — /mnt/data/Images/SALAGOU/BatchTool-EpEjEz-9e1c7a12.digikamtempfile.JPG (тимчасовий файл, який буде створено засобом керування пакетною чергою).

  • Заголовок запису — Salagou Trip.

  • Коментар до запису є порожнім.

  • Кольоровою міткою запису є 5 (зелена).

  • Значенням впорядкувальної мітки є 3 (прийнято).

  • Значенням оцінки запису є 3 зірочки.

  • Мітками запису є Places, Places/France, Places/France/Salagou Lake.

Додавання «водяного» знаку за допомогою ImageMagick

Другий приклад, який наведено нижче, є складнішим і використовує командний інструмент ImageMagick для додавання багаторядкового тексту, накладеного на зображення для створення видимого «водяного» знаку у центрі кожного зображення у черзі обробки.

watermark="This image is\ncopyrighted and\navailable with\nlimited usage"

in_file="$INPUT"
out_file="$OUTPUT"

convert -size 2000x1000 xc:none -gravity center \
    -stroke yellow -pointsize 120 -font Courier-BoldOblique \
    -strokewidth 3 -annotate +100+100 "${watermark}" \
    -blur 0x25 -level 0%,50% \
    -fill white -stroke none -annotate +100+100 "${watermark}" \
    "${in_file}"  +swap -gravity center -geometry +0-3 \
    -composite  "${out_file}"

Примітка

У цьому прикладі немає явного виклику exit для повернення значення до робочого процесу. Bash використовує останній викликаний метод як повернуте значення скрипту. Тут цим методом є інструмент командного рядка ImageMagick convert.

Результат буде таким, як наведено нижче.

Результат виконання скрипту з використанням ImageMagick для застосування «водяного» знаку