r shell animation imagemagick system

Error al ejecutar ImageMagick desde R: parámetro inválido



shell animation (4)

Sé que alguien más ya encontró la solución a su problema, pero hay una manera más fácil de resolverlo sin tener que incluir todo el camino en el sistema (). Simplemente configure ani.options(convert = ''pathway/convert.exe'') después de cargar el paquete de animación.

Estoy tratando de hacer una animación GIF en R. Tengo una matriz de matrices que deseo convertir en una animación GIF. Mi estrategia está inspirada en este ejemplo:

http://ryouready.wordpress.com/2010/11/21/animate-gif-images-in-r-imagemagick/

donde el siguiente código produce 11 imágenes PNG con la función "png" en R. A continuación solicita el programa ImageMagick externo "convertir" para compilar la animación GIF.

dir.create("examples") setwd("examples") # Animated countdown from 10 to "GO!". png(file="example%02d.png", width=200, height=200) for (i in c(10:1, "G0!")){ plot.new() text(.5, .5, i, cex = 6) } dev.off() # convert the .png files to one .gif file using ImageMagick. system("convert -delay 80 *.png example_1.gif") #shell("convert -delay 80 *.png example_1.gif")

El problema es que R no parece encontrar el archivo exe "convertir", que es parte de ImageMagick e instalado en la unidad C (C: / Program Files / ImageMagick-6.8.5-Q16). En los comentarios al sitio web al que me estoy vinculando anteriormente , se sugiere a los usuarios de Windows usar "shell" en lugar de "system" para ejecutar programas externos, pero ninguno de los dos funciona. El mensaje de error es

Invalid parameter - 80 Warning message: running command ''convert -delay 80 *.png example_1.gif'' had status 4

Intenté cambiar la variable del entorno Windows PATH en las propiedades del sistema, como se sugiere en esta respuesta , pero la variable PATH ya estaba definida en mi sistema. También traté de especificar toda la cadena del archivo convert.exe, pero también sin suerte ...

¿Cómo puedo hacer que ImageMagick se ejecute a través de R?

Especificaciones: Windows 7 Servicepack 1, R 3.0.0

Gracias por adelantado...


En Windows, hay varios comandos convert.exe, todos los cuales están en la RUTA. Por lo tanto, debe especificar la ruta al ejecutable de la derecha convert.exe. En mi caso, lo tenía en la carpeta LyX (sin embargo, también lo encontrarás en la instalación de ImageMagick). Tenga cuidado con las comillas, las barras invertidas y el espaciado si está pegando. Por ejemplo, desde dentro de R:

system(''"C://Program Files (x86)//LyX 2.0//imagemagick//convert.exe" -delay 20 -loop 0 files_*.png animation.gif'')


Después de intentar todas estas correcciones, así como estas y otras sin éxito, utilicé un software alternativo para realizar la conversión, varias de las cuales se describen aquí . Soy un usuario de Windows y encontré que las sencillas instrucciones contenidas en ese sitio para VirtualDub lograron rápidamente esta tarea.


Soy un usuario de Windows 10, después de definir el directorio de trabajo lo conseguí trabajando en R usando

shell("convert -set delay 80 -loop 0 *.jpg example_shell_test.gif")

dentro de cmd cada comando significa lo siguiente

convert = función de conversión abierta de ImageMagick

-set delay x = establece el tiempo de retardo entre cada fotograma en x (1000 = 1 segundo)

-loop 0 = loop forever, si se establece en 1 pasará por las imágenes una vez

*. [tipo de imagen] = y archivo de. [tipo de imagen]

[name of output gif] .gif = save new .gif as

Lo obtuve trabajando primero en el símbolo del sistema navegando al directorio y ejecutando la línea

convert -set delay 80 -loop 0 *.jpg example_cmd_test.gif

Antes de esto estaba usando -delay = 80 en lugar de -set delay 80 en cmd y obtuve el error: convert: argumento inválido para la opción ''-delay'': = @ error / convert.c / ConvertImageCommand / 1277.

En R usando el comando system () con el correcto "-set delay x" recibí un error:

> system("convert -set delay = 80 -loop 0 *.jpg example_3.gif") Invalid Parameter - delay Warning message: running command ''convert -set delay = 80 -loop 0 *.jpg example_3.gif'' had status 4

otros errores en shell ()

> shell("convert -set delay = 80 -loop 0 *.jpg example_shell_test11.gif") convert: unable to open image ''80'': No such file or directory @ error/blob.c/OpenBlob/3094. convert: no decode delegate for this image format `'' @ error/constitute.c/ReadImage/509. Warning messages: 1: running command ''C:/WINDOWS/system32/cmd.exe /c convert -set delay = 80 -loop 0 *.jpg example_shell_test11.gif'' had status 1 2: In shell("convert -set delay = 80 -loop 0 *.jpg example_shell_test11.gif") : ''convert -set delay = 80 -loop 0 *.jpg example_shell_test11.gif'' execution failed with error code 1

Lo ejecuté en R con shell () después y parece funcionar bien

shell("convert -set delay = 80 -loop 0 *.jpg example_shell_test.gif")

Eche un vistazo a este hilo también

ImageMagick - Problema con Windows y función de conversión