当前版本的rmagick gem(2.13.1)不适用于当前版本的ImageMagick(6.6.4)

时间:2010-10-09 18:28:08

标签: ruby-on-rails ruby image image-processing imagemagick

我在OSX Snow Leopard上虽然我认为这可能不是特定于平台的问题。 问题是我浪费了一生的时间试图让gem install rmagick工作,我希望能够拯救下一个悲伤的人。 我认为核心问题总结在标题中。

问题:

  1. 任何人都可以确认Rmagick 2.13.1不适用于ImageMagick 6.6.4吗?
  2. 在Snow Leopard上安装Rmagick的最佳解决方案是什么?
  3. 是否应该使用MacPorts来安装ImageMagick? (我无法弄清楚如何告诉macports使用旧版本的ImageMagick。)
  4. 最后:

    现在让ImageMagick工作正在给我配合,因为我尝试以各种方式安装各种版本,并且它们互相干扰。 下面是清除和重新安装macports的说明(这是必要的吗?)但我不知道如何清理其他库以进行新的ImageMagick安装。 例如,我目前在尝试运行ImageMagick时出现以下错误

    dyld: Library not loaded: /usr/local/lib/libfreetype.6.dylib
      Referenced from: /usr/local/bin/convert
      Reason: Incompatible library version: convert requires version 11.0.0 or later,
              but libfreetype.6.dylib provides version 10.0.0
    

    也许只是在重新安装之前摆脱/ usr / local / lib / libfreetype *就足够了(我在这里确认ImageMagick工作时会确认)但是有更完整/确定的方法来重新安装特定版本ImageMagick?

    附录:清除并重新安装MacPorts

3 个答案:

答案 0 :(得分:1)

RMagick是一个有趣的图书馆。如果可能的话,避免使用它。如果您只是调整图像和其他基本内容的大小,请查看minimagick。 RMagick的主要问题源于内存使用和泄漏 - 在开发过程中通常不明显,但在生产中它们会变得很难看。

我的建议是尽可能地考虑替代方案 - 如果你必须做更复杂的工作,实际上可能更喜欢使用Python / PIL(用Ruby包裹 - 我用它来获取OpenCV) , 例如)。取决于您的用例。

如果你真的需要RMagick,那么Homebrew可能比端口更好。我是一个Linux家伙,这些东西往往只是工作,在那里,在包管理器之外正确设置像ImageMagick这样的东西的最终方法是从源代码构建它。不确定OSX的实用性如何,但如果其他所有方法都失败,那么它可能值得一试。

答案 1 :(得分:1)

从根本上说,答案确实似乎是你需要使用较旧版本的ImageMagick来实现Rmagick(至少在Snow Leopard下)。

我已经确认ImageMagick 6.5.6-10适用于Rmagick 2.13.1。 (Rmagick主页说它已经通过ImageMagick 6.6.1-0进行了测试。版本6.6.1-0似乎不可用,但可能是6.6.1-10,可用,也很好。)

MacPorts的所有问题可能都是红色鲱鱼。尽管如此,MacPorts似乎没有办法安装以前版本的ImageMagick,所以我从源代码安装它。 HomeBrew可能是更好的选择。

通过删除/ usr / local / lib / libfreetype *并重新安装ImageMagick,我通过ImageMagick获得的错误得到了解决。 我也清除并重新安装了MacPorts,但我不知道这是必要的。

以下是我为实现这一目标所采取的确切步骤,尽可能重新构建它们。

  1. 清除并重新安装MacPorts(请参阅上述问题的附录)。
  2. 删除/ usr / local / lib / libfreetype *
  3. sudo port -v install freetype + bytecode
  4. sudo port -v install librsvg
  5. 我没有这样做,但有些人可能会想:sudo port -v install graphviz + gs + wmf + jbig + jpeg2 + lcms
  6. cd / usr / local / src
  7. curl'ftp://ftp.imagemagick.org/pub/ImageMagick/legacy/ImageMagick-6.5.6-10.tar.gz'> ImageMagick-6.5.6-10.tar.gz(这可能也会起作用:ftp://ftp.imagemagick.org/pub/ImageMagick/ImageMagick-6.6.1-10.tar.gz
  8. tar xzvf ImageMagick-6.5.6-10.tar.gz
  9. 进入那里,但不按照Install-whatever.txt中的说明进行操作,因为它们都搞砸了。
  10. 导出CPPFLAGS = -I / usr / local / include
  11. 导出LDFLAGS = -L / usr / local / lib
  12. ./ configure --prefix = / usr / local --disable-static --with-modules --without-perl --without-magick-plus-plus --with-quantum-depth = 8 --disable -openmp --with-gs-font-dir = / usr / local / share / ghostscript / fonts
  13. 使
  14. sudo make install
  15. gem install rmagick
  16. 唷!请注意,步骤3-14可能会替换为:http://github.com/masterkain/ImageMagick-sl

答案 2 :(得分:1)

我也试图安装早期版本的ImageMagick,但我试图通过Homebrew来做。然而,在此过程中,我发现了如何通过MacPorts安装较旧的软件包,它确实对我有用(尽管由于其他原因我不得不放弃MacPorts)。

有关迁移到较旧端口版本的说明,请访问: https://trac.macports.org/wiki/howto/InstallingOlderPort