ImageMagick 中的 convert 在哪里?

Where is convert in ImageMagick?

我刚刚度过了令人气愤的一天,试图用 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?

谢谢

三个选项:

  1. 考虑使用 magick R package 而不是 system()
  2. 将脚本从 convert ... 更改为 magick convert ...
  3. Re-install imagemagick,并启用"Install legacy utilities (e.g. convert)"选项。

此更改自 7.0.1 以来一直存在(现在高达 7.0.7),并在他们的 porting guide 中进行了讨论,特别是在标题为 "Command Changes".

的部分中

从哲学上讲,我更喜欢安装遗留实用程序,主要是因为它可能会导致与命令名称混淆。例如,windows 中的 non-ImageMagick convert.exe 尝试转换文件系统...可能不是您想要意外触发的(您获得正确参数的可能性很小)实际进行更改,但它仍然不是 0)。 PATH 中的目录顺序将决定您要呼叫的目录。

编辑:

  1. 从评论来看,"static" 和 "dll" 安装程序之间的差异似乎可能会禁用安装遗留实用程序(例如 convert.exe)的选项。因此,您可以切换到 "dll" 以获得旧版选项,或者您只能使用选项 1(magick R 包)和 2("magick convert ...")。

  2. 从进一步的评论(感谢 fmw42 和 MarkSetchell),很明显旧的 convert.exe 和当前的 magick.exe convert 遗留模式与当前的不一样推荐 magick.exe(没有 "convert");前两个是传统模式和兼容模式,但它们不接受目前 magick-alone 支持的所有参数。因此,在命令中的任何地方使用 "convert" 应该表示使用 v6,而不是当前的 v7。这个答案只是继续使用 v6 机制的补丁;有人可能会争辩说更好的解决方案是使用 magick.exe 的 v7 接口,完全删除 "convert" 遗留模式。