Script personalitzat¶
Vista general¶
El Gestor de la cua per lots permet personalitzar un flux de treball afegint l'eina de Script personalitzat per a executar un script per a processar les imatges amb eines externes com l'ImageMagick o l'ExifTool.
L'eina anomenada Script personalitzat està disponible a la categoria Eines personalitzades de la llista Eines bàsiques. L'eina està dissenyada per a executar el codi font d'un script d'intèrpret d'ordres que pot cridar un o més programes de línia d'ordres per a cada element a la cua. L'script de l'intèrpret d'ordres l'escriu l'usuari completament dins del connector. Aquests scripts poden incloure un conjunt de variables d'entorn que especifiquen noms de fitxer i alguns tipus de metadades.
![](../_images/bqm_custom_script.webp)
El gestor de la cua per lots inclou un script personalitzat en un flux de treball¶
L'eina ofereix aquestes opcions:
Tipus de la imatge de sortida: especifica el format d'imatge esperat a la sortida de l'script. El valor predeterminat és El mateix que l'entrada, però podeu establir JPEG, PNG o TIFF. Tingueu en compte que JPEG és un format de compressió amb pèrdua, només admet una profunditat de color de 8 bits i no admet la transparència.
Script de l'intèrpret d'ordes: aquest camp és a on introduïu el codi font del vostre script. Al Linux i macOS, s'admet l'script en Bash. Al Windows, s'admet el fitxer de processament per lots.
Les paraules clau que podeu utilitzar en el codi de l'script es llisten a continuació. L'eina substituirà totes les ocurrències de les paraules clau a l'script en temps d'execució abans de l'execució de l'script. Tingueu en compte que les paraules clau distingeixin entre majúscules i minúscules.
$INPUT se substituirà pel nom del fitxer d'entrada del flux de treball (escapant els caràcters especials).
$OUTPUT se substituirà pel nom de fitxer de sortida del flux de treball (escapant els caràcters especials).
Important
Sempre s'esperarà un fitxer nou a $OUTPUT. Els programes de script que no creen un fitxer nou (p. ex., canviar les metadades amb ExifTool), primer haureu de copiar $INPUT a $OUTPUT amb l'ordre adequada del sistema operatiu abans de fer qualsevol canvi a $OUTPUT.
Les variables d'entorn que podeu utilitzar en l'script de l'intèrpret d'ordres són:
TITLE: per a utilitzar la propietat de l'element Títol.
COMMENTS: per a utilitzar la propietat de l'element Llegenda.
COLORLABEL: per a utilitzar la propietats de l'element Rètol de color.
PICKLABEL: per a utilitzar la propietat de l'element Rètol de selecció.
RATING: per a utilitzar la propietat de l'element Valoració.
TAGSPATH: per a utilitzar la propietat de l'element Etiquetes.
Totes aquestes propietats es basen en les propietats de la imatge emmagatzemades a la base de dades del digiKam.
Nota
Al Linux i macOS, es pot accedir a les variables d'entorn en l'script amb $ com a prefix dels noms de les variables (per exemple, $INPUT). L'intèrpret utilitzat per a executar l'script és /bin/bash.
Al Windows, es pot accedir a les variables d'entorn de l'script amb % com a prefix i sufix de noms de les variables (per exemple, %INPUT%). L'intèrpret utilitzat per a executar l'script és cmd.exe.
Valor de retorn¶
Per convenció, un script en Bash en el Linux i macOS retorna 0 en cas d'èxit o un nombre sencer dins l'interval 1 a 255 per a un error. Utilitzeu exit < codi_error > per a tornar el valor de retorn al flux de treball.
Al Windows, un fitxer de processament per lots retorna 0 en cas d'èxit i un altre valor per a un error, però el valor és un nombre sencer amb signe, per tant, és possible un valor negatiu. Utilitzeu EXIT /B < codi_error > per a tornar el valor de retorn al flux de treball.
El Gestor de la cua per lots maneja el valor retornat per l'script. Si es retorna zero, el flux de treball continuarà com s'esperava. Altrament, el flux de treball s'interromprà i el Gestor de la cua per lots aturarà el processament.
Exemples¶
Prova de concepte¶
Aquest primer exemple que es mostra a continuació no fa res especial. Imprimeix a la consola els noms dels fitxers d'entrada/sortida i les propietats dels elements passats des del gestor de la cua per lots a l'script, i copia el fitxer d'entrada al fitxer de sortida (aquesta etapa és necessària per a evitar que el gestor de la cua per lots retorni un error perquè el fitxer de destinació no existeix). L'script retorna el valor de l'ordre de còpia de fitxer, que és analitzada pel gestor de la cua per lots per a cada element del flux de treball.
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 $?
Si heu iniciat el digiKam des d'una terminal i activeu els seguiments de depuració a la pàgina de diàleg Configuració/Miscel·lània/Sistema, veureu alguna cosa com això:
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
La informació del digiKam agafada des de la base de dades és:
L'element processat és /mnt/data/Images/SALAGOU/DSC08833.JPG.
El nom del fitxer de destinació és /mnt/data/Images/SALAGOU/BatchTool-EpEjEz-9e1c7a12.digikamtempfile.JPG (un fitxer temporal generat pel Gestor de la cua per lots).
El títol de l'article és Salagou Trip.
El comentari de l'element és nul.
El rètol de color de l'element és 5 (verd).
El rètol de selecció de l'element és 3 (acceptada).
La valoració de l'element és de 3 estrelles.
Les etiquetes de l'element són Llocs, Llocs/França, Llocs/França/Llac Salagou.
Afegir una marca d'aigua amb ImageMagick¶
El segon exemple a continuació és més complex i utilitza l'eina de la línia d'ordres ImageMagick per a afegir marques d'aigua visibles superposant un camp de text multilínia sobre cada imatge de la cua.
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}"
Nota
En aquest exemple, no hi ha una crida exit explícita per a tornar un valor sobre el flux de treball. Bash utilitza l'últim mètode anomenat com el valor retornat per l'script, aquí l'eina de línia d'ordres «convert» d'ImageMagick.
Això dona un resultat com el següent.
![](../_images/bqm_imagemagick_watermark.webp)
El resultat de l'script que utilitza ImageMagick per a aplicar una marca d'aigua¶