2 votes

Comment faire pour que Automator traite les images en utilisant ImageMagick dans une commande script ?

Je crée un flux de travail Automator qui utilise l'action shell script pour traiter une sélection d'images avec la commande composite imagemagick. Seulement, j'ai des problèmes pour le faire fonctionner. Selon les résultats que j'obtiens lorsque j'exécute le flux de travail, tout fonctionne ; cependant, je sais que ce n'est pas le cas en raison du fait que les changements que je m'attendrais à voir dans le dossier d'images ne sont pas présents. Je sais que la commande imagemagick que j'utilise est correcte car elle fonctionne correctement depuis la console. (J'ai fait écho de la commande composite à la sortie et l'ai copiée dans une session Terminal. Cela a fonctionné comme sur des roulettes). BTW : Le flux de travail est pour le traitement d'un fondu sur un film en stop motion que j'ai fait. Oui, je sais que je pourrais utiliser des outils vidéo pour réaliser la même chose, mais ceux auxquels j'ai accès gâchent la qualité de l'image à la sortie.

Voici le 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

J'ai d'abord pensé que la cause du problème pouvait être les espaces dans les chemins, mais j'ai éliminé cette possibilité en déplaçant les fichiers vers un chemin sans espaces, mais cela n'a eu aucun effet.

Je suis presque certain que le problème est lié à quelque chose dans la commande bash, mais je ne connais pas du tout bash, c'est la première fois que j'écris une commande bash scripts, mais je connais très bien le scriptage de la console Windows et je n'aurais aucun problème à faire fonctionner cela là-bas.

Si l'erreur dans le script n'est pas assez évidente à attraper, quelqu'un pourrait-il proposer une méthode pour déboguer cela afin que je puisse comprendre pourquoi les images ne sont pas traitées même si le script s'exécute sans erreur ?

2voto

beroe Points 3151

Je ferais juste le tout à la ligne de commande comme un shell script au lieu d'utiliser Automator pour le lancer. Mettez #!/bin/bash comme première ligne, et l'exécuter comme

myscript.sh image*.png

image*.png L'ensemble de fichiers d'images que vous sélectionnez apparemment dans Automator est-il un ensemble ?

Si vous avez besoin de l'exécuter sur tous les fichiers d'un dossier, c'est également possible.

Vous pouvez également tester votre script dans automator en utilisant echo ${f%.*} au lieu des commandes elles-mêmes.

1voto

Remplacer for $f avec for f . for $f in aa; do :; done donne lieu à une erreur du type `$f': not a valid identifier .

Aussi si composite ne figure pas dans le chemin d'accès, indiquez le chemin d'accès complet à ce dernier (comme /usr/local/bin/composite ).

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X