5

尝试使用 Mac OSX 和自制软件试一试 RMagick。

版本:Mac OSX 10.7.5、HomeBrew 0.9.4.、Ruby 2.0、Rmagick 2.13.2、ImageMagick 6.8.6-3。

这是我的 Ruby 代码,位于一个名为rename.rb

require 'RMagick'
include Magick

cat = ImageList.new("test.jpg")
cat.display
exit

这是我的终端输出:

rename.rb:5:in `display': delegate library support not built-in `test.jpg' (X11) @ error/display.c/DisplayImages/16067 (Magick::ImageMagickError)
    from rename.rb:5:in `<main>'

似乎我安装了适当的代表(不过,我不完全确定,因为我是 ImageMagick 的 n00b)。如果我运行convert -list configure,我会得到这个:

...
DELEGATES      bzlib fontconfig freetype jng jpeg png rsvg tiff xml zlib
...

有任何想法吗?谢谢!

4

1 回答 1

12

图像已成功读取和处理,您的错误被抛出cat.display它不是缺少图像格式委托,而是窗口显示委托。

如果您只需键入以下命令,您将在命令行上看到相同的错误消息:

display test.jpg

所以这是一个 Image Magick 问题,而不是 RMagick 或 Ruby 问题。

似乎该display方法旨在与 X11 窗口一起使用,这不是 Mac OS X 上的默认功能。您可以重新构建它,包括 X11 服务和库。我使用 XQuartz 来支持 X11,但是在 Image Magick之后安装它(就像我一样)不会解决这个问题。所以,我得到和你一样的错误,但我不使用display,我只是使用open test.jpg命令行上的命令,或者:

`open test.jpg`

来自红宝石。这不是一个与平台无关的解决方案,但我可以很好地查看我处理的图像。

或者,您可以尝试重新安装支持 X11 的 Image Magick 和 rmagick(当然前提是您安装了 XQuartz 等 X11 服务):

brew unlink imagemagick
brew install imagemagick --with-x11
gem install rmagick

我已经对此进行了测试,它可以cat.display启动一个显示窗口。虽然我认为我自己会继续使用其他观众。

于 2013-08-09T15:54:52.857 回答