【问题标题】:Error running ImageMagick from R: Invalid Parameter - 80从 R 运行 ImageMagick 时出错:参数无效 - 80
【发布时间】:2017-06-03 15:00:04
【问题描述】:

我在 32 位计算机上使用 Windows 7。我已经安装了 ImageMagick-7.0.4-4-Q16-x86-dll.exe。我在 Environmetal 变量的路径中添加了 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 来解决这个问题,但没有成功。

【问题讨论】:

  • 您确定您实际使用的是 ImageMagick 命令,而不是 Windows 系统工具吗?它们具有相同的名称。
  • 我不确定我使用的是 ImageMagick 命令还是 Windows 系统工具。我怎么知道?
  • 我刚刚打开了我的 Windows 机器 - 您肯定使用的是 Windows 命令,而不是 imageMagick 命令。这应该对您有所帮助:imagemagick.org/Usage/windows/#convert_issue
  • 要知道您使用的是哪个,请使用Sys.which("convert")。我的猜测(同意@Chrisss)是它会返回类似"C:\\WINDOWS\\SYSTEM32\\convert.exe" 的东西。 convert 不会做任何永久性的事情,例如 “将 FAT 卷转换为 NTFS”(参考:Windows 上的 system("help convert")),这是一件好事。

标签: r imagemagick


【解决方案1】:

有一个名为 CONVERT.EXE 的 Microsoft 工具多年来一直与同名的 ImageMagick 工具发生冲突。

ImageMagick 版本 7 有一个新的命令名称,即 magick,您可以使用它来代替 convertidentify 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 正在您的图像所在的目录中运行,因此您可以像这样检查它的运行位置:

    系统(“密码”)

  • 如果它不在您的图像所在的目录中运行,您可以使用图像的绝对路径(即从驱动器顶部开始的路径,例如“C:\User\Fred\FunkyImages\Image1 .jpg") 或者您可以在处理之前更改system() 命令中的目录:

    system("cd 某处 && 做某事")

【讨论】:

  • 使用魔法而不是转换对我有用。谢谢!
猜你喜欢
  • 2013-04-24
  • 2016-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-13
  • 2019-04-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多