Come posso far sì che Automator elabori le immagini usando ImageMagick in uno script di comando?

2

Sto creando un flusso di lavoro di Automator che utilizza l'azione dello script della shell per elaborare una selezione di immagini con il comando composito imagemagick. Solo io sto avendo problemi per farlo funzionare. In base ai risultati ottenuti quando eseguo il flusso di lavoro, tutto funziona comunque, so che non è dovuto al fatto che i cambiamenti che mi aspetto di vedere nella cartella delle immagini non sono presenti. So che il comando imagemagick che sto usando è corretto perché funziona correttamente dalla console. (Ho fatto eco al comando composito all'output e l'ho copiato in una sessione Terminale, come un incantesimo). BTW: Il flusso di lavoro per l'elaborazione di una dissolvenza in un filmato in stop motion che ho realizzato. Sì, so che potrei usare gli strumenti video per ottenere la stessa cosa, ma quelli a cui ho accesso possono rovinare la qualità dell'immagine in uscita.

Ecco lo script

imagesCount=$#
rate=$(echo "scale=2; 100/$imagesCount"|bc)
percentage=$rate
for f in "$@"; do
    fileName=${f%.*}
    composite -blend "$percentage" -size 1280x720 "$f" xc:black -alpha Set "$fileName-1.jpg"
    percentage=$(echo "scale=2; $percentage+$rate"|bc)
done

All'inizio pensavo che la causa del problema potrebbe essere spazi nei percorsi, ma ho rimosso questa possibilità spostando i file in un percorso senza spazi, ma ciò non ha avuto alcun effetto.

Sono quasi sicuro che il problema sia legato a qualcosa nel comando bash, ma non so affatto bash, questa è la mia prima volta che scrivo qualsiasi script di comando bash, ma sono molto esperto nello scripting di console Windows e non avere problemi a far funzionare questa cosa lì.

Se l'errore nello script non è abbastanza ovvio da catturare, qualcuno potrebbe proporre un metodo per eseguire il debug di questo in modo da poter capire perché le immagini non vengono elaborate anche se lo script viene eseguito senza errori?

    
posta Greg 08.09.2013 - 17:34
fonte

2 risposte

2

Vorrei semplicemente fare il tutto alla riga di comando come script di shell invece di usare Automator per avviarlo. Metti #!/bin/bash come prima riga e lanciala come

myscript.sh image*.png

dove image*.png è la tua serie di file immagine che apparentemente stai selezionando in Automator?

Se è necessario eseguirlo su tutti i file in una cartella, è possibile farlo anche.

Puoi anche testare il tuo script in automator usando echo ${f%.*} invece dei comandi stessi.

    
risposta data 08.09.2013 - 20:00
fonte
1

Sostituisci for $f con for f . for $f in aa; do :; done genera un errore come '$f': not a valid identifier .

Anche se composite non si trova sul percorso, specifica il percorso completo (come /usr/local/bin/composite ).

    
risposta data 08.09.2013 - 20:05
fonte

Leggi altre domande sui tag