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