如何在 XQuartz 中使用 ImageMagick

How to use ImageMagick with XQuartz

我正在尝试在 R 中创建动画可视化,但有人说需要安装 ImageMagick。但是,目前的 Mac 似乎不再支持 x11,而 ImageMagick 只需要 Mac 上的 X11 服务器。 Install ImageMagick

我也试过 brew install imagemagick --with-x11,但没有用,只返回了这么多错误。

Apple 表示需要使用 XQuartz 来替换 x11。我有 XQuartz,但是当我打开它时,输入相同的命令here,仍然给我同样的错误

display: delegate library support not built-in '' (X11) @ error/display.c/DisplayImageCommand/1891.

所以,我的问题是,如何通过 Mac XQuartz 安装和使用 ImageMagick?

更新答案

请注意,自从我写下这个答案后情况发生了一些变化,Homebrew 不再支持 --with-x11 等安装选项。 @MattWhite 在评论中指出的一种可能性是交互式安装 ImageMagick

brew install imagemagick -i;
./configure --disable-osx-universal-binary --prefix=/usr/local/Cellar/imagemagick/7.0.8-66 --disable-silent-rules --with-x11
make install
exit

我想到的另一个选择是,与其安装所有 XQuartz,不如添加自己的使用 macOS 内置 Preview 应用程序的委托,然后告诉 ImageMagick 使用它,即 委托 给它。这意味着您可以执行以下操作:

magick SomeImage.png -crop 100x100+10+10 display:

为此,您需要找到 delegates.xml 文件。我用过这个:

magick -list delegate | awk '/^Path/ {print }'

我的地址是:

/opt/homebrew/Cellar/imagemagick/7.1.0-16/etc/ImageMagick-7/delegates.xml

然后我编辑了那个文件并在非常接近末尾的地方添加了一行,但就在最后一行的上方,如下所示:

<delegate decode="miff" encode="display" spawn="True" command="magick %i %u.png ; /usr/bin/open -a Preview %u.png"/>

ImageMagick 知道的任何文件格式转换为 Preview 应用程序理解的 PNG,并且应该能够表示大多数图像,即使是 16 位的图像深度和透明度。

原答案

一般来说,要在 X11 上使用 ImageMagick,如果您遵循以下步骤,您很可能会成功:

步骤 1 - 安装或更新 Xcode 命令行工具

重要的是您的开发人员工具是最新的,特别是如果您在最初设置它们后更新了 macOS 版本。你可以这样做:

xcode-select --install

步骤 2 - 确保正确安装了 ImageMagick

最简单的方法是首先确保删除和清理旧版本的 ImageMagick,然后安装(或重新安装)最新版本:

brew update                           # update homebrew itself 
brew rm imagemagick                   # remove old IM versions
brew install imagemagick --with-x11   # install latest IM version including X11 support

步骤 3 - 检查

如果您多年来一直尝试安装 ImageMagick,您可能遗留了一些旧版本。在 /usr/local/bin 中使用自制软件安装的版本很重要,因此请检查您是否 运行 使用以下内容期望的版本:

which convert           # should report "/usr/local/bin/convert"
which magick            # should report "/usr/local/bin/magick"

identify -version       # should report same version as next command
brew info imagemagick

步骤 4 - 启动 X11

启动 X11,启动 X11 可能是最简单的 xclock,它不仅会启动 X11,还会检查 X11 的所有内容 运行 以及您的 X11 环境配置是否正确:

xclock & 

步骤 5 - 运行 ImageMagick X11

现在您可以测试您的 ImageMagick 配置,不需要任何测试图像,如下所示 - 因为 wizard: 图像是内置的:

display wizard:

我创建了一个 Homebrew ImageMagick X11 可以像这样使用的公式:

brew uninstall imagemagick  # without X11 support
brew install --cask xquartz
brew install tlk/imagemagick-x11/imagemagick 

请注意,homebrew-core 曾经支持 formula options such as --with-x11 in order to enable a configure option of the same name. This is no longer the case as the Homebrew maintainer(s) decided 从 homebrew-core 公式中删除公式选项。