Script personalizzato¶
Panoramica¶
Il gestore elaborazione in serie ti consente di personalizzare un flusso di lavoro aggiungendo lo strumento Script personalizzato per avviare uno script ed elaborare le tue immagini con strumenti esterni tipo ImageMagick o ExifTool.
Lo strumento Script personalizzato si trova nella categoria Strumenti personalizzati dell’elenco Strumenti di base. Lo strumento è progettato per eseguire il codice sorgente di uno script di shell che può richiamare uno o più programmi a riga di comando per ciascun elemento nella coda. Lo script di shell viene scritto dall’utente completamente all’interno dell’estensione. Questi script possono includere un gruppo di variabili d’ambiente che specificano i nomi file e alcuni tipi di metadati.
Lo strumento offre le opzioni seguenti:
Tipo di file output: specifica il formato immagine atteso nell’output dello script. Il valore predefinito è Uguale a quello di input, ma puoi anche impostare JPEG, PNG o TIFF. Nota che JPEG è un formato di compressione con perdita di dati, supporta soltanto la profondità di colore a 8 bit e non supporta la trasparenza.
Script di shell: questo campo testuale è dove inserisci il codice sorgente per il tuo script di shell. È supportato lo script Bash in Linux e macOS, mentre in Windows è supportato lo script Batch.
Le parole chiave che puoi utilizzare nel codice del tuo script sono elencate sotto. Lo strumento sostituirà tutte le occorrenze delle parole chiave nello script di shell al tempo di esecuzione, prima dell’esecuzione dello script. Nota che le parole chiave distinguono tra maiuscole e minuscole.
$INPUT è sostituito dal nome file di input del flusso di lavoro (con caratteri speciali di escape).
$OUTPUT è sostituito dal nome file di output del flusso di lavoro (con caratteri speciali di escape).
Importante
Ci si aspetta sempre un nuovo file in $OUTPUT. I programmi di script che non creano un nuovo file (per es. il cambio di metadati con ExifTool) devono prima copiare $INPUT in $OUTPUT con il corretto comando per il sistema operativo, prima di eseguire qualsiasi modifica in $OUTPUT.
Le variabili di ambiente utilizzabili nel tuo script di shell sono:
TITLE: per usare la proprietà dell’elemento Titolo di digiKam.
COMMENTS: per usare la proprietà dell’elemento Didascalia di digiKam.
COLORLABEL: per usare la proprietà dell’elemento Etichetta colorata di digiKam.
PICKLABEL: per usare la proprietà dell’elemento Etichetta di scelta di digiKam.
RATING: per usare la proprietà dell’elemento Valutazione di digiKam.
TAGSPATH: per usare la proprietà dell’elemento Tag di digiKam.
Tutte queste proprietà sono impostate basandosi sulle proprietà dell’immagine memorizzata nella banca dati di digiKam.
Nota
In Linux e macOS, le variabili d’ambiente sono accessibili nello script con $ come un prefisso per nomi di variabile (per esempio $INPUT). L’interprete utilizzato per eseguire lo script è /bin/bash.
In Windows, le variabili d’ambiente sono accessibili nello script con % come un prefisso e suffisso dei nomi di variabile (per esempio %INPUT%). L’interprete utilizzato per eseguire lo script è cmd.exe.
Valore restituito¶
Per convenzione, uno script Bash in Linux e macOS restituisce 0 per valori corretti o un intero nell’intervallo 1-255 per un errore. Usa exit < codice_errore > per ripassare il valore restituito al flusso di lavoro.
In Windows, uno script Batch restituisce 0 per valori corretti e un altro valore per un errore, ma il valore è un intero con segno, dunque è possibile un valore negativo. Usa EXIT /B < codice_errore > per passare il valore restituito al flusso di lavoro.
Il Gestore elaborazione in serie gestisce il valore restituito dallo script. Se è restituito zero, il flusso di lavoro continuerà come atteso, in caso contrario il flusso è interrotto e il Gestore elaborazione in serie ferma l’elaborazione.
Esempi¶
Prova di fattibilità¶
Questo primo esempio mostrato sotto non fa nulla di speciale. Stampa sulla console i nome file di input/output e le proprietà degli elementi passati dal Gestore elaborazione in serie allo script, e copia il file di input nel file di output (questa fase è obbligatoria, altrimenti il Gestore elaborazione in serie restituirebbe un errore in quanto il file di destinazione non esiste). Lo script restituisce il valore dal comando copia file; che viene analizzato dal Gestore elaborazione in serie per ciascun elemento nel flusso del lavoro.
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 $?
Se hai avviato digiKam da terminale e abilitato la tracciatura di debug nella finestra di dialogo Impostazione/Varie/Sistema, vedrai qualcosa di simile a questo:
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
Le informazioni di digiKam prese dalla banca dati sono:
L’elemento elaborato è /mnt/data/Images/SALAGOU/DSC08833.JPG.
Il nome file di destinazione è /mnt/data/Images/SALAGOU/BatchTool-EpEjEz-9e1c7a12.digikamtempfile.JPG (un file temporaneo generato dal Gestore elaborazione in serie).
L’elemento Title è Salagou Trip.
L’elemento Comment è null.
L’elemento Color Label è 5 (verde).
L’elemento Pick Label è 3 (Accettata).
L’elemento Rating è 3 stelle.
L’elemento Tag è Places, Places/France, Places/France/Salagou Lake.
Aggiungere una filigrana con ImageMagick¶
Il secondo esempio sotto riportato è più complesso e utilizza lo strumento a riga di comando di ImageMagick per filigrane visibili sovrapponendo un campo di testo a più righe a ciascuna immagine nella coda.
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
In questo esempio, non c’è una chiamata di uscita esplicita che restituisca un valore al flusso di lavoro. Bash usa l’ultimo metodo chiamato come valore restituito dallo script, in questo caso lo strumento a riga di comando di ImageMagick convert.
Viene restituito un risultato come riportato sotto.