ImageMagick(RSVG)不会在SVG中导入图像

时间:2013-05-22 22:53:49

标签: svg imagemagick librsvg

我正在尝试使用ImageMagick将SVG文件转换为PNG。

SVG文件如下:

<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
    <image xlink:href="picture.jpg" width="200" height="200"/>
</svg>

无论我使用什么方法,最终结果都不包括图像。其他SVG元素已正确呈现。

我试过了:

convert test.svg test.png
rsvg-convert -o test.png test.svg

我已尝试更改图像路径以使用file:///,绝对路径,远程网址和每个网址的url编码变体。我还使用和不使用doctype来格式化我的文件。

我正在使用librsvg 2.36.3和ImageMagick 6.8.0-10 我已经能够使用phantomjs来转换它们,但对于这一项任务来说似乎有些过分。

请帮忙!

1 个答案:

答案 0 :(得分:1)

对我来说,安装gtk3(或者更具体地说是“shared-mime-info”帮助。(然后重新安装rsvg并使用绝对“file:///”uri进行href并使用图像文件与svg文件相同的目录)

更多信息(我仍然对确切的情况感到困惑):

  • 我认为问题不是直接用rsvg,而是用gdk-pixbuf(2)库

  • 我在代码中找到了使用gdk-pixbuf加载图片的地方。我确认(使用printf debuggin)它不会抛出错误(似乎加载pixbuf就好了)即使href中的uri没有指向文件。

  • gtk3依赖只应该是rsvg-view-3工具所必需的,而不是rsvg,但它似乎是(或者当我安装gtk3时被拉入的依赖之一)

    < / LI>
  • 即使在卸载gtk3后它仍然有效。它甚至在卸载gtk3之后仍然有效,然后重建rsvg(./configure检测到:“gtk3:no”),所以我认为它必须与我安装gtk3时拉出的依赖项之一有关:

    < / LI>
  • ATK-2.10.0-1-i686的

  • 高彩色图标主题-0.12-2-任何
  • GTK的更新图标缓存-2.24.22-1-i686的
  • libtasn1-3.3-2-i686的
  • P11-KIT-0.20.1-1-i686的
  • GNUTLS-3.2.5-1-i686的
  • libcups-1.7.0-1-i686的
  • libxinerama-1.1.3-2-i686的
  • 共享的mime信息-1.2-1-i686的
  • libgusb-0.1.6-1-i686的
  • NSPR-4.10.1-2-i686的
  • JS​​-17.0.0-1-i686的
  • polkit-0.112-1-i686的
  • 共享色型材-0.1.5-1-任何
  • dconf-0.18.0-1-i686的
  • colord-1.0.2-2-i686的
  • recordproto-1.14.2-1-任何
  • libxtst-1.2.2-1-i686的
  • 在-SPI2核-2.10.1-1-i686的
  • 在-SPI2-ATK-2.10.0-1-i686的
  • xkeyboard-CONFIG-2.10.1-1-任何
  • libxkbcommon-0.3.1-1-i686的

(我将这些留在这里,以防它不是我最后确定的lib)

所以我尝试在组中删除这些deps并在其间重建和测试。结果证明它的工作是......

* shared-mime-info