ImageMagick中的convert在哪里?

5

我刚刚度过了一天令人恼火的时间,试图在R中将一系列jpg文件制作成gif。我安装了ImageMagick来运行以下代码:

system("convert -delay 40 *.png example_4.gif")

但我收到了以下错误信息:
Warning message:
running command 'convert -delay 40 *.png example_4.gif' had status 4

这似乎是一条路径错误信息。我已经在Imagemagick下载文件中查找了convert,但无论如何都找不到。请问有人知道它的具体位置吗?

或者,是否有其他更简单的方法可以使用R从一系列JPEG图像创建GIF动画而不需要太长时间?

谢谢!


3
如果您正在使用版本7及以上的ImageMagick,尤其是在Windows操作系统上并且未选择“安装传统选项”,请尝试将“convert”替换为“magick”。请注意,这不会改变原始意思。 - Mark Setchell
1
我记得在Windows上遇到过这个问题。不幸的是,我现在找不到我的代码了 :(. 我认为解决方案是指定转换程序的完整路径。 - ilya
1
magick convert 怎么样? - zindarod
1
如果您告诉我们您使用的操作系统以及如何安装ImageMagick,那将会很有帮助... - Mark Setchell
1
因此,请查找您安装Imagemagick的目录,并查找程序magick.exe的完整路径名称,并在您的system()命令中使用该完整路径。 - Mark Setchell
显示剩余6条评论
1个回答

10

三种选项:

  1. 考虑使用magick R包而不是使用system()
  2. 将您的脚本从convert ...更改为magick convert ...
  3. 重新安装imagemagick,并启用“安装传统实用程序(例如convert)”选项。

    enter image description here

这个变化已经存在自7.0.1以来(现在已经更新到7.0.7),并在他们的移植指南中讨论,特别是在“命令更改”一节中。

哲学上,我更喜欢安装传统实用程序,主要是因为它会导致一些命令名称混淆。例如,在windows中,非ImageMagick的convert.exe尝试转换文件系统...可能不是您想要意外触发的内容(您极低的机会可以正确地获取参数以实际进行更改,但这仍然不是0)。您PATH中的目录顺序将决定您调用的目录。

编辑

  1. 从评论中看来,“静态”和“dll”安装程序之间的差异可能会禁用安装传统实用程序(如convert.exe)的选项。因此,您可以切换到“dll”以获取传统选项,或者仅限于选项1(magick R包)和2("magick convert ...")。

  • 根据fmw42和MarkSetchell的进一步评论,旧版convert.exe和当前的magick.exe convert遗留模式与当前推荐的不带"convert"的magick.exe不同;前两者是遗留和兼容模式,但它们不接受magick完全支持的所有参数。因此,在命令中任何地方使用"convert"都应该表示使用v6,而不是当前的v7。因此,这个答案只是为了继续使用v6机制的修补程序;更好的解决方案可能是使用magick.exe的v7接口,完全删除"convert"遗留模式。


  • 有趣的是,我实际上得到了一个不同的“选择其他任务”框,它只给出了前4个和最后一个选项(因此不包括传统选项)。 - unknown
    1
    magick vignette非常完整,所以我想这是可能的。由于我不像你一样创建动画gif,我将从“动画”部分中获取提示,这应该不难做到。 - r2evans
    好的,我已经下载了DLL安装程序,并且如果将脚本更改为magick convert,则可以正常工作!谢谢! - unknown
    2
    Magick、magick convert和convert是不同的。在IM 7中,正确的命令是magick。其他命令指向遗留的IM 6方法。您应该找到magick的路径并在前面加上路径,或将路径放入环境PATH变量中,以便正确使用IM 7(除非您想使用遗留的IM 6代码)。 - fmw42
    1
    @r2evans magick ...magick convert ... 明显表现不同。尝试使用 magick -size 100x100 xc:black -resize "%[fx:w*2]" a.jpg 来将图像宽度加倍,它将被解析并执行得很好,但是如果将 magick 替换为 convertmagick convert,则会失败,因为后两者实现了 v6 行为。 - Mark Setchell
    显示剩余3条评论

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接