¿Cómo consigo que Automator procese imágenes usando ImageMagick en una secuencia de comandos?

2

Estoy realizando un flujo de trabajo de Automator que utiliza la acción del script de shell para procesar una selección de imágenes con el comando compuesto imagemagick. Solo estoy teniendo problemas para ponerlo en marcha. De acuerdo con los resultados que obtengo cuando ejecuto el flujo de trabajo, todo está funcionando, sin embargo, sé que no se debe al hecho de que los cambios que esperaría ver en la carpeta de imágenes no están presentes. Sé que el comando imagemagick que estoy usando es correcto, ya que funciona correctamente desde la consola. (Repetí el comando compuesto a la salida y lo copié en una sesión de Terminal. Corrí como un hechizo). Por cierto: el flujo de trabajo para procesar un fundido en una película de stop motion que hice. Sí, sé que podría usar herramientas de video para lograr lo mismo, pero a las que tengo acceso para arruinar la calidad de imagen en la salida.

Aquí está el 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

Al principio pensé que la causa del problema podría ser espacios en las rutas, pero eliminé esta posibilidad cambiando los archivos a una ruta sin espacios, pero eso no tuvo ningún efecto.

Estoy casi seguro de que el problema está relacionado con algo en el comando bash, pero no conozco a bash, esta es la primera vez que escribo scripts de comandos de bash, pero tengo muchos conocimientos de scripts de consola de Windows y No tengo problemas para que esto funcione allí.

Si el error en la secuencia de comandos no es lo suficientemente obvio como para detectarlo, ¿alguien propondría un método para depurar esto para poder averiguar por qué las imágenes no se procesan a pesar de que la secuencia de comandos se ejecuta sin errores?

    
pregunta Greg 08.09.2013 - 17:34

2 respuestas

2

Simplemente haría todo en la línea de comandos como un script de shell en lugar de utilizar Automator para iniciarlo. Coloque #!/bin/bash como la primera línea y ejecútelo como

myscript.sh image*.png

¿dónde image*.png es tu conjunto de archivos de imagen que aparentemente estás seleccionando en Automator?

Si necesita ejecutarlo en todos los archivos de una carpeta, también puede hacerlo.

También puedes probar tu script en automator usando echo ${f%.*} en lugar de los comandos en sí mismos.

    
respondido por el beroe 08.09.2013 - 20:00
1

Reemplaza for $f con for f . for $f in aa; do :; done produce un error como '$f': not a valid identifier .

También si composite no está en la ruta, especifique la ruta completa a ella (como /usr/local/bin/composite ).

    
respondido por el user495470 08.09.2013 - 20:05

Lea otras preguntas en las etiquetas