我正在尝试使用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和每个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 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 shared-color-profiles-0.1.5-1-any dconf-0.18.0-1-i686 彩色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
(以防万一不是我最终确定的库,我将其保留在此处)
因此,我尝试将这些部门分组删除,并在两者之间进行重建和测试。原来使它工作的是...
*共享 mime 信息