我正在尝试在R中制作GIF动画。我有一个矩阵数组,希望将其转换为GIF动画。我的策略受到此示例的启发:
http://ryouready.wordpress.com/2010/11/21/animate-gif-images-in-r-imagemagick/
其中以下代码使用R中的“png”函数生成11个PNG图片。接下来,它调用外部ImageMagick程序“convert”编译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")
问题在于R似乎无法找到ImageMagick中的"convert"可执行文件,该文件已经安装在C驱动器(C:\Program Files\ImageMagick-6.8.5-Q16)中。在我之前引用的网站评论中,建议Windows用户使用"shell"而不是"system"来运行外部程序,但这两种方法都不起作用。错误消息为:
Invalid parameter - 80
Warning message:
running command 'convert -delay 80 *.png example_1.gif' had status 4
我已经尝试根据这个答案的建议,在系统属性中更改Windows PATH环境变量,但是在我的系统上,PATH变量已经被正确定义了。我还尝试指定整个convert.exe文件的字符串,但仍然没有运气...
如何通过R运行ImageMagick?
规格: Windows 7 Servicepack 1, R 3.0.0
提前感谢...
system("where convert", intern = TRUE)
会给你什么结果? - flodelconvert
变量中的第一个文件路径是 ImageMagick 文件路径,我再次检查了一下。当我运行代码system("C:/Program Files/ImageMagick-6.8.5-Q16/convert -delay 80 *.png example_1.gif")
时,似乎什么也没有发生。 当我运行shell("C:/Program Files/ImageMagick-6.8.5-Q16/convert -delay 80 *.png example_1.gif")
时,我收到错误消息:'C:/Program' was not recognized as an internal or external command, program or batch file.
然后是一系列 R 错误。 - Duffausystem("C:/Program Files/ImageMagick-6.8.5-Q16/convert -delay 80 *.png example_1.gif", intern = TRUE)
- flodelexample_1.gif
? - flodelsystem('"C:\\Program Files\\ImageMagick-6.8.5-Q16\\convert.exe" -delay 80 *.png example_1.gif', intern = TRUE)
。 - flodel