【发布时间】:2013-04-24 23:49:42
【问题描述】:
我正在尝试在 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 的一部分并安装在 C 驱动器上的 exe 文件“convert”(C:\Program Files\ImageMagick-6.8.5-Q16)。在i am linking to earlier 网站的cmets 中,建议Windows 用户使用“shell”而不是“system”来运行外部程序,但两者都不起作用。错误信息是
Invalid parameter - 80
Warning message:
running command 'convert -delay 80 *.png example_1.gif' had status 4
我已尝试更改系统属性中的 Windows PATH 环境变量,如 answer 中所建议的那样,但 PATH 变量已在我的系统上正确定义。我也尝试指定 convert.exe 文件的整个字符串,但也没有运气......
如何让 ImageMagick 通过 R 运行?
规格: Windows 7 服务包 1, R 3.0.0
提前谢谢...
【问题讨论】:
-
您引用的错误消息并不表示 R 没有找到
convert... 当您使用完整路径时会收到什么错误消息?一种可能性是您的PATH中有另一个convert程序。如果您将目录添加到PATH环境变量的末尾,请尝试将其放在开头。 -
system("where convert", intern = TRUE)带给你什么? -
convert变量中的第一个文件路径是 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 -错误。 -
您建议的代码给出以下结果:
> system("where convert", intern = TRUE) [1] "C:\\Program Files\\ImageMagick-6.8.5-Q16\\convert.exe" [2] "C:\\Windows\\System32\\convert.exe"非常感谢您的帮助...非常感谢。 -
那么可能是
system('"C:\\Program Files\\ImageMagick-6.8.5-Q16\\convert.exe" -delay 80 *.png example_1.gif', intern = TRUE)。
标签: r shell animation imagemagick system