Ubuntu 用RSVG实现svg与非局部图像的转换

Ubuntu 用RSVG实现svg与非局部图像的转换,ubuntu,svg,imagemagick,librsvg,rsvg,Ubuntu,Svg,Imagemagick,Librsvg,Rsvg,我有一个SVG图像,如下所示,我正在尝试将其转换为PNG: <?xml version="1.0"?> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <image x="0" y="0" width="158" height="158" xlink:href="http://cdn.sstatic.net/stackexch

我有一个SVG图像,如下所示,我正在尝试将其转换为PNG:

<?xml version="1.0"?>
<svg xmlns="http://www.w3.org/2000/svg"
    xmlns:xlink="http://www.w3.org/1999/xlink">
  <image x="0" y="0" width="158" height="158"
     xlink:href="http://cdn.sstatic.net/stackexchange/img/logos/so/so-icon.png" />
</svg>

这在Ubuntu 10.04上运行,但现在在12.04上没有。原因似乎是RSVG现在不会加载任何没有相对路径的图像URL

这不是一个选项-我的网站生成SVG(所以我知道它是安全的),但它要求通过HTTP加载图像

图像在Chrome中显示良好,但在Imagemagick、Gimp或(奇怪的)Inkscape中显示不好

如果有帮助的话,我会通过PHP使用Imagemagick,但是RSVG是SVG转换的委托

除了重新编译librsvg之外,有人对如何解决这个问题有什么想法吗

我曾尝试过这些建议,但看起来可疑的是,问题出在:


我在这里找到了负责的代码:


我可能错了,但他们似乎已经禁用了来自其他URL的加载,在没有重新编译的情况下无法重新启用它?

由于librsvg是在gnome/gtk系列中共享的,因此严格拒绝远程资源非常重要。如果您已经在使用PHP,那么就不需要花费太多的精力就可以使用&mdash;使用&mdash;修改SVG,这实际上就是我现在正在做的事情。像librsvg这样的东西在不同版本之间变化如此之大,以至于它会在没有警告的情况下停止工作,实际上变得毫无用处(因为甚至没有办法重新启用旧的行为)@emcconville您想发布此解决方案以便我可以接受吗?我的解决方案非常糟糕,而且不是通用的,因为我知道我创建的SVG.Hmm中的URL格式。你真的需要rsvg吗?根据svg图像的复杂性,您可能可以使用IM的内部矢量图形引擎。以下命令是否适用于您的系统<代码>转换-大小158x158 msvg:source.svg out.png谢谢!MSVG有效!我的SVG不是超复杂的,它们只使用旋转、文本、图像和圆角矩形。有没有办法强迫PHP Imagick使用它?当然,Imagemagick将来也可能会选择修改MSVG-因此,也许原始解决方案更好…实际上-当我对我制作的图像运行“convert MSVG:”时,出于某种原因,它也不起作用-因此回到选项1。还有一个选项(在我的例子中)是从图像所在的同一个Web服务器上提供SVG文件,然后从HTTP加载该文件以进行转换,这解决了相同来源的问题。