Aangepast script

Overzicht

De Takenwachtrijbeheerder biedt u het aanpassen van een Werkmethode met een specifieke plug-in gericht op het uitvoeren van een script en uw afbeeldingen te bewerken met externe hulpmiddelen zoals, bijvoorbeeld ImageMagick of ExifTool.

Het hulpmiddel is genaamd Aangepast script, beschikbaar in de lijst Basishulpmiddelen, en categorie Aangepaste hulpmiddelen. Het doel is om een script met broncode geschreven door de gebruiker in de plug-in, een serie omgevingsvariabelen behandeld in the code en gestuurd voor een aangepast gebruik met gedelegeerde opdrachtregelprogramma’s geïnstalleerd op uw computer.

De Takenwachtrijbeheerder die een aangepast script invoegt in een werkmethode

Het hulpmiddel levert drie opties:

  • Type uitvoerafbeelding: deze waarde biedt het instellen van het verwachte type afbeeldingsformaat te gebruiken bij de uitvoer van uw script. De standaard is Zelfde als invoer, maar u kunt JPEG, PNG of TIFF instellen. Let er op dat JPEG een compressieformaat is met verlies, alleen 8-bits kleurdiepte ondersteunt en geen transparantie ondersteunt.

  • Shell-script: dit bewerkbare tekstveld biedt het invoeren van de broncode van uw shell-script. Onder Linux en macOS wordt Bash script ondersteund. Onder Windows wordt Batch script ondersteund.

De sleutelwoorden die u in uw script kunt gebruiken staan hier onder. Het hulpmiddel zal alle voorkomens in het script bij uitvoeren vervangen voordat de shell wordt uitgevoerd. Let er op dat sleutelwoorden kleine en hoofdletters onderscheiden.

  • $INPUT voor bestandsnaam van invoer van werkmethode (met speciale tekens escaped).

  • $OUTPUT voor bestandsnaam van uitvoer van werkmethode (met speciale tekens escaped).

Belangrijk

Een nieuw bestand wordt altijd verwacht op $OUTPUT. Met een script dat geen nieuw bestand maakt (bijv. wijzigen van metagegevens met hulpmiddel Exif) moet u eerst $INPUT naar $OUTPUT kopiëren met een opdracht geschikt voor het besturingssysteem en daarna de wijzigingen doen op $OUTPUT.

De omgevingsvariabelen die u kunt gebruiken in uw script worden onderstaand getoond:

  • TITLE: om eigenschappen van item Titel uit de database digiKam te behandelen.

  • COMMENTS: om eigenschappen van item Opschrift uit de database digiKam te behandelen.

  • COLORLABEL: om eigenschappen van item Kleurlabel uit de database digiKam te behandelen.

  • PICKLABEL: om eigenschappen van item Keuzelabel uit de database digiKam te behandelen.

  • RATING: om eigenschappen van item Waardering uit de database digiKam te behandelen.

  • TAGSPATH: om eigenschappen van item Tags uit de database digiKam te behandelen.

Notitie

Onder Linux en macOS, kunnen omgevingsvariabelen in een script gebruikt worden met $ als prefix van namen van variabelen (bijvoorbeeld $INPUT). De interpreter die het script uitvoert is /bin/bash.

Onder Windows kunnen omgevingsvariabelen in een script gebruikt worden met % als voor- en achtervoegsel van namen van variabelen (bijvoorbeeld %INPUT%). De interpreter die het script uitvoert is cmd.exe

Teruggegeven waarde

De conventie van een Bash-script onder Linux en macOS is, dat 0 teruggegeven wordt bij succes of een geheel getal in de reeks van 1-255 voor iets anders. gebruik exit < error_code > om de teruggegeven waarde aan de werkmethode door te geven.

Onder Windows geeft een Batch script een 0 terug bij success en een andere waarde voor iets anders, maar de waarde is een geheel getal met teken, dus een negatieve waarde is mogelijk. gebruik EXIT /B < error_code > om de teruggegeven waarde aan de werkmethode door te geven.

De Takenwachtrijbeheerder behandelt de waarde teruggeven door uw script. Als nul wordt teruggegeven zal de werkmethode doorgaan zoals verwacht, anders is het een gebroken werkmethode en de Takenwachtrijbeheerder stopt het proces.

Voorbeelden

Proof of Concept

Dit eerste voorbeeld dat u onderstaand ziet, …doet niets speciaals. Het zal print op de console de invoer/uitvoer bestandsnamen en eigenschappen van het item doorgegeven uit de takenwachtrijbeheerder naar het script en kopieert invoerbestand naar uitvoerbestand (dit stadium is vereist anders geeft de takenwachtrijbeheerder een fout terug omdat het doelbestand niet bestaat). Het script geeft de waarde terug van het kopiëren van het bestand, deze wordt bekeken door de takenwachtrijbeheerder om de stroom in de werkmethode te controleren.

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 $?

Als u digiKam vanaf een terminal hebt gestart en de debugtraces hebt aangeschakeld Dialoogpagina Opzet/Div/Systeem, dan zult iets zien zoals dit:

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

De informatie van digiKam genomen uit de database is:

  • Verwerkt item is /mnt/data/Images/SALAGOU/DSC08833.JPG.

  • Doelbestandsnaam is /mnt/data/Images/SALAGOU/BatchTool-EpEjEz-9e1c7a12.digikamtempfile.JPG (een tijdelijk bestand gegenereerd door takenwachtrijbeheerder).

  • Titel van item is Salagou Trip.

  • Item Commentaar is null.

  • Item Kleurlabel is 5 (Groen).

  • Item Keuzelabel is 3 (Geaccepteerd).

  • Item Waardering is 3 sterren.

  • Item Tags zijn Plaatsen, Plaatsen/Frankrijk, Plaatsen/Frankrijk/Salagou Lake.

Een watermerk toevoegen met ImageMagick

Het tweede onderstaande voorbeeld is complexer en gebruikt het commando ImageMagick als hulpmiddel om een multi-regel tekst over plaatjes te zetten om een zichtbaar watermerk in het centrum van de afbeeldingen te zetten.

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}"

Notitie

In dit voorbeeld is er geen expliciete exit aanroep om een waarde aan de werkmethode terug te geven. Bash gebruikt de laatst aangeroepen methode als de terugkeerwaarde uit het script, hier de opdracht van ImageMagick convert.

Dit geeft een resultaat zoals onderstaand.

Het resultaat van het script met gebruik van ImageMagick om een watermerk toe te passen