Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ImageMagick(RSVG)赢得';在SVG中导入图像_Svg_Imagemagick_Librsvg - Fatal编程技术网

ImageMagick(RSVG)赢得';在SVG中导入图像

ImageMagick(RSVG)赢得';在SVG中导入图像,svg,imagemagick,librsvg,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> 我已尝试更改图像路径,以使用file://

我正在尝试使用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>
我已尝试更改图像路径,以使用file://、绝对路径、远程url以及每个图像的url编码变体。我还格式化了文件,有doctype和没有doctype

我使用的是librsvg2.36.3和ImageMagick 6.8.0-10 我已经能够使用phantomjs来转换它们,但对于这项任务来说,这似乎有些过分了


请帮忙

对我来说,安装gtk3(或者更具体地说是“共享mime信息”有帮助。(然后重新安装rsvg,并使用href的绝对“file://”uri,并将图像文件与svg文件放在同一目录中)

更多信息(我仍然不清楚到底发生了什么):

  • 我认为问题不在于rsvg,而在于gdk pixbuf(2)库

  • 我在代码中找到了使用gdk pixbuf加载图像的位置。我确认(使用printf debuggin)即使href中的uri没有指向文件,它也不会抛出错误(加载pixbuf似乎很好)

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

  • 即使在卸载gtk3之后,它仍然可以工作。在卸载gtk3,然后重建rsvg(./configure detects:“gtk3:no”)之后,它仍然可以工作,因此我认为它必须与安装gtk3时提取的一个依赖项有关:

  • atk-2.10.0-1-i686

  • hicolor-icon-theme-0.12-2-any
  • gtk-update-icon-cache-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
  • shared-mime-info-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
  • 彩色D-1.0.2-2-i686
  • recordproto-1.14.2-1-任何
  • libxtst-1.2.2-1-i686
  • at-spi2-core-2.10.1-1-i686
  • at-spi2-atk-2.10.0-1-i686
  • xkeyboard-config-2.10.1-1-any
  • libxkbcommon-0.3.1-1-i686
(我把这些留在这里,以防它不是我最后确定的库)

所以我试着在小组中移除这些DEP,并在两者之间重建和测试。结果证明,使其工作的是


*共享mime信息

图像缺少X,Y坐标。@阿尔文克。X,Y坐标是可选的,它们默认为零。@Erik:谢谢,我被更正了。我今天早上用ImageMagick 6.6.9-7成功地将Doctype的裸骨SVG转换为PNG。@阿尔文克。你有没有像我上面那样包含图像?@KTastrophy:准确副本+粘贴,仅编辑jpg。额外的两行是
-您尝试过使用另一个jpg文件吗?此外,它似乎仅在图像文件与svg文件位于同一目录下时才起作用,即使使用完全绝对“file:///...“href的uri。它帮助日志“#定义G#u ENABLE_DEBUG”在config.h.rsvg convert中,然后抛出一个关于找不到文件的实际错误。
convert test.svg test.png
rsvg-convert -o test.png test.svg