使用librsvg / rsvg和ImageMagick一起转换SVG图像

16

我知道这个问题已经有几个答案了(比如这个:ImageMagick convert SVG to PNG not working with RSVG enabled),但实际上我找不到真正解决我的问题的方法。我的问题是:我有一个特定的SVG文件(而且我将生成更多),在SVG > PNG转换过程中,ImageMagick内部的转换器处理时并不能完美地进行转换。因此,我需要改用 librsvg,因为它可以做到这一点。我使用了以下两行代码进行测试,并获得了不同的结果:

    convert test.svg test.png  // ( img: http://tinyurl.com/px2lw3v )
    rsvg-convert test.svg -o test.png // ( img: http://tinyurl.com/lreu6sk )

我安装了HomeBrew。按照这里的说明,我使用以下代码安装了ImageMagick:brew install imagemagick --use-rsvg。我发现它没有安装librsvg,所以我需要像这样先卸载再重新安装:brew reinstall imagemagick --with-libsrvg librsvg --use-rsvg:这将imagemagick和librsvg一起安装到我的Mac上。但是它们没有连接起来:convert -list format | grep SVG的结果如下:

 MSVG  SVG       rw+   ImageMagick's own SVG internal renderer
  SVG  SVG       rw+   Scalable Vector Graphics (XML 2.9.0)
 SVGZ  SVG       rw+   Compressed Scalable Vector Graphics (XML 2.9.0)

在这种情况下:convert -list delegate | grep svg 的结果是:

    svg =>          "rsvg-convert" -o "%o" "%i"

我已经多次安装、卸载和重新安装它们,但仍然没有改变,脚本convert test.svg test.png在没有librsvg的情况下完成。我在/usr/local/Cellar/imagemagick/6.8.9-1/lib/ImageMagick/config-Q16/configure.xml中添加了标签行,但没有进展。我不知道该怎么做,也不知道如何连接ImageMagick并强制使用不同的库来执行convert test.svg test.png
谢谢您的帮助。
更多信息:
    $ which convert
    /usr/local/bin/convert

    $ convert -version
    Version: ImageMagick 6.8.9-1 Q16 x86_64 2014-05-12 http://www.imagemagick.org
    Copyright: Copyright (C) 1999-2014 ImageMagick Studio LLC
    Features: DPC Modules
    Delegates: bzlib freetype jng jpeg ltdl lzma png xml zlib

    $ otool -L $(which convert)
    /usr/local/bin/convert:
        /usr/local/Cellar/imagemagick/6.8.9-1/lib/libMagickCore-6.Q16.2.dylib (compatibility version 3.0.0, current version 3.0.0)
        /usr/local/Cellar/imagemagick/6.8.9-1/lib/libMagickWand-6.Q16.2.dylib (compatibility version 3.0.0, current version 3.0.0)
        /usr/local/lib/libfreetype.6.dylib (compatibility version 18.0.0, current version 18.2.0)
        /usr/lib/liblzma.5.dylib (compatibility version 6.0.0, current version 6.3.0)
        /usr/lib/libbz2.1.0.dylib (compatibility version 1.0.0, current version 1.0.5)
        /usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.5)
        /usr/local/lib/libltdl.7.dylib (compatibility version 11.0.0, current version 11.0.0)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1)

    $ which rsvg-convert
    /usr/local/bin/rsvg-convert

    $ otool -L $(which rsvg-convert)
    /usr/local/bin/rsvg-convert:
        /usr/local/Cellar/librsvg/2.36.3/lib/librsvg-2.2.dylib (compatibility version 39.0.0, current version 39.3.0)
        /usr/local/lib/libgdk_pixbuf-2.0.0.dylib (compatibility version 3001.0.0, current version 3001.8.0)
        /usr/local/lib/libgio-2.0.0.dylib (compatibility version 4001.0.0, current version 4001.0.0)
        /usr/local/lib/libpangocairo-1.0.0.dylib (compatibility version 3601.0.0, current version 3601.5.0)
        /usr/local/lib/libpango-1.0.0.dylib (compatibility version 3601.0.0, current version 3601.5.0)
        /usr/local/lib/libgobject-2.0.0.dylib (compatibility version 4001.0.0, current version 4001.0.0)
        /usr/local/lib/libcairo.2.dylib (compatibility version 11203.0.0, current version 11203.16.0)
        /usr/local/lib/libpng16.16.dylib (compatibility version 29.0.0, current version 29.0.0)
        /usr/local/lib/libcroco-0.6.3.dylib (compatibility version 4.0.0, current version 4.1.0)
        /usr/lib/libxml2.2.dylib (compatibility version 10.0.0, current version 10.9.0)
        /usr/local/lib/libgthread-2.0.0.dylib (compatibility version 4001.0.0, current version 4001.0.0)
        /usr/local/lib/libglib-2.0.0.dylib (compatibility version 4001.0.0, current version 4001.0.0)
        /usr/local/opt/gettext/lib/libintl.8.dylib (compatibility version 10.0.0, current version 10.2.0)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1)
  • ImageMagick 6.6.9-1
  • Mac OS X 10.9.4

如果您在系统上安装了Inkscape,ImageMagick将自动使用它。它不需要作为委托安装。通常比RSVG更好。 - fmw42
4个回答

16

我尝试过,我的解决方案适用于Mac:

  1. 运行 brew doctorbrew update
  2. 使用简单的命令 brew reinstall imagemagick --with-librsvg // - 你可能输入错了拼写!
  3. 尝试它。它应该可以工作!

是否有效?


嗨Zoltan,你能看一下这个相关的问题吗?你的帖子在本地成功让我解决了问题,但是在服务器上由于文本细微差别目前无法成功。http://stackoverflow.com/questions/26789732/converting-svg-to-pdf-and-downloading-small-errors-in-svg-text-elements - SOUser
17
这个答案似乎已经过时了 - 当前的homebrew会出现错误Error: invalid option: --with-librsvg - leecbaker

9
如果您想使用Homebrew安装支持svg的imagemagick,您需要使用旧版本。2019年初,他们从安装过程中删除了选项。
    brew install https://github.com/Homebrew/homebrew-core/raw/46a2ef7c9f0380b8e19f8dfe37270caa27581353/Formula/imagemagick.rb --with-librsvg

或者,从源代码编译,因为“GraphicsMagick可以为几乎任何现代Unix系统(包括Linux和MacOS X)编译源代码”(http://www.graphicsmagick.org/README.html#installation)。 - l --marc l

6

(在Zoltan的回答中添加更多内容)

使用brew info imagemagick查看安装时可用的选项。

--with-librsvg
    Build with librsvg support

2
homebrew选项--with-librsvg不再受支持。我遇到了错误。 - Ed of the Mountain

0

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