KTa*_*phy 6 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>
Run Code Online (Sandbox Code Playgroud)
无论我使用什么方法,最终结果都不包括图像.其他SVG元素已正确呈现.
我试过了:
convert test.svg test.png
rsvg-convert -o test.png test.svg
Run Code Online (Sandbox Code Playgroud)
我已经尝试更改图像路径以使用file:///,绝对路径,远程URL和每个的url编码变体.我还使用和没有doctype格式化我的文件.
我正在使用librsvg 2.36.3和ImageMagick 6.8.0-10我已经能够使用phantomjs来转换它们,但对于这一项任务来说似乎有些过分.
请帮忙!
对我来说,安装 gtk3 (或者更具体地说“shared-mime-info”有帮助。(然后重新安装 rsvg 并使用绝对“file:///” uri 作为 href 并将图像文件与 svg 文件放在同一目录中)
更多信息(我仍然很困惑到底发生了什么):
我认为问题不直接出在 rsvg 上,而是出在 gdk-pixbuf(2) 库上
我在代码中找到了使用gdk-pixbuf加载图像的地方。我确认(使用 printf debuggin)即使 href 中的 uri 不指向文件,它也不会抛出错误(似乎加载 pixbuf 就很好)。
gtk3 依赖项只应该是 rsvg-view-3 工具所必需的,而不是 rsvg 所必需的,但它似乎是(或者是我安装 gtk3 时引入的依赖项之一)
即使卸载 gtk3 后它仍然有效。它甚至在卸载 gtk3,然后重建 rsvg 后仍然可以工作(./configure 检测到:“gtk3:否”),所以我认为它一定与我安装 gtk3 时提取的依赖项之一有关:
atk-2.10.0-1-i686
(我将它们留在这里,以防它不是我最终确定的库)
因此,我尝试按组删除这些部门,并在其间进行重建和测试。事实证明,让它发挥作用的是......
* 共享 mime 信息