ImageMagick无法使用JPEG(OSX/X11)?

5

我想在Mac OSX和HomeBrew上尝试使用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不太熟悉)。如果我运行convert -list configure,会得到以下结果:

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

有什么想法吗?谢谢!

1个回答

12

图像已被成功读取和处理,你遇到的错误是由cat.display引起的。它不是缺少图像格式委托,而是缺少窗口显示委托。

如果你只是输入以下命令,你将看到相同的错误信息:

display test.jpg

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

看起来display方法是设计用于X11窗口系统,但这不是Mac OS X的默认功能。您可以重新构建它,包括X11服务和库。我使用XQuartz来支持X11,但安装它(就像我做的那样)之后仍无法解决此问题。所以,我和您一样也遇到同样的错误,但我没有使用display方法,我只是在命令行上使用类似open test.jpg这样的命令:

`open test.jpg`

来自Ruby。这不是一个跨平台的解决方案,但我可以很好地查看我处理的图像。

或者,您可以尝试重新安装带有X11支持的Image Magick和rmagick(前提是您已安装了X11服务,例如XQuartz):

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

我已经测试过这个,它可以有效地启动一个显示窗口,使用 cat.display 命令。虽然我认为我会继续使用其他的查看器。


谢谢。在重新安装带有X11的imagemagick之前,我实际上不得不卸载它。 - HankCa

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