我在32位计算机上使用Windows 7。我已经安装了ImageMagick-7.04-4-Q16-x86-dll.exe。我在环境变量的路径中添加了ImageMagick的路径。在命令提示符中使用convert--version可以正确地显示ImageMagick(但当我使用system()在R中运行它时就不会了)。现在,我尝试使用以下R代码(取自另一篇stackoverflow帖子)制作一个动画gif文件:
library(animation)
ani.options('C:/Program Files/ImageMagick-7.0.4-Q16/convert.exe')
dir.create("examples")
setwd("examples")
png(file="example%02d.png",width=200, height=200)
for(i in c(10:1,"GO!")){
plot.new()
text(.5,.5,i,cex=6)
}
dev.off()
到目前为止还没有显示错误消息。但当我写下以下行时:
system("convert -delay 80 *.png example_1.gif")
它抛出以下错误:
无效参数-80警告消息:运行命令"convert-delay 80*.png example_1.gif"的状态为4
之后,我运行了以下命令
system("convert --version")
并抛出以下错误:
驱动器规范无效警告消息:运行命令"convert--version"的状态为4
我试图通过在管理员模式下运行RStudio来解决这个问题,但没有成功。
有一个名为CONVERT.EXE
的Microsoft工具多年来一直与同名的ImageMagick工具发生冲突。
ImageMagick的第7版有一个新的命令名,即magick
,您可以使用它来代替convert
、identify
、mogrify
和ImageMagick套件中的其他命令。
因此,
identify image.png
成为
magick identify image.png
和
convert image.png -resize 10x10 result.png
成为
magick image.png -resize 10x10 result.png
除此之外,您还需要确保R正在使用的PATH包括包含
magick.exe
的目录。您还需要确保
system()
shell在映像所在的目录中运行,这样您就可以检查它在哪里运行,如下所示:系统("pwd")
如果它不在图像所在的目录中运行,您可以使用图像的绝对路径(即从驱动器顶部开始的路径,如"C:\User\Fred\FunkyImages\Image1.jpg"),也可以在进行处理之前更改
system()
命令中的目录:系统("cd某处&&做某事")