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

Огляд

У засобі керування пакетною обробкою можна налаштувати робочий процес за допомогою спеціалізованого додатка, який призначено для запуску скрипту і обробки ваших зображень зовнішнім інструментом, зокрема 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 з бази даних.

Примітка

У 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 для застосування «водяного» знаку