如何在 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 公式中删除公式选项。
我正在尝试在 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 公式中删除公式选项。