【问题标题】:Use librsvg / rsvg to convert SVG images with ImageMagick使用 librsvg / rsvg 通过 ImageMagick 转换 SVG 图像
【发布时间】:2014-08-22 04:32:32
【问题描述】:

我知道这个问题在这里有几个已回答的版本(例如:ImageMagick convert SVG to PNG not working with RSVG enabled),但实际上我找不到我的确切问题的真正解决方案。我的问题是:我有一个特定的 SVG 文件(我会生成更多),SVG>PNG 转换器进程中的 ImageMagick 不能完美转换。所以我需要将其更改为 librsvg,因为确实如此,所以我测试了这 2 行,结果不同:

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

我安装了 HomeBrew。如此处所述:ImageMagick convert SVG to PNG not working with RSVG enabled 我使用此代码安装 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 更好。

标签: macos svg imagemagick homebrew librsvg


【解决方案1】:

如果你想使用 Homebrew 安装支持 svg 的 imagemagick,你需要使用旧版本。他们在 2019 年初从安装过程中删除了选项。

    brew install https://github.com/Homebrew/homebrew-core/raw/46a2ef7c9f0380b8e19f8dfe37270caa27581353/Formula/imagemagick.rb --with-librsvg

【讨论】:

【解决方案2】:

(只是在 Zoltan 的回答中添加更多上下文)

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

--with-librsvg
    Build with librsvg support

【讨论】:

  • 自制选项 --with-librsvg 不再支持。我收到错误
【解决方案3】:

我试过了,我的解决方案是在 Mac 上:

  1. 运行brew doctorbrew update
  2. 简单地使用brew reinstall imagemagick --with-librsvg // - 你可能拼错了!
  3. 试试看。它应该工作!

有效吗?

【讨论】:

  • 嗨 zoltan 你能看看这个相关的问题吗?你的帖子帮助我成功地让它在本地工作,但服务器上的文本细微差别现在阻碍了成功stackoverflow.com/questions/26789732/…
  • 这个答案似乎已经过时 - 当前自制程序给出错误Error: invalid option: --with-librsvg
猜你喜欢
  • 2013-05-18
  • 2016-10-05
  • 1970-01-01
  • 1970-01-01
  • 2012-07-20
  • 2015-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多