答案是我标记的答案,但是在评论中。基本上,请看这里:http://www.imagemagick.org/discourse-server/viewtopic.php?f=1&t=18816
在Mac上运行此端口:
sudo port install ImageMagick +rsvg
这是我原来的问题:
我的test.svg文件在这里:https://gist.github.com/2727243
Imagemagick版本:ImageMagick 6.7.6-9 2012-05-18 Q16(今天刚刚更新)
我有一个SVG文件,它有一个defs - >用于定义箭头符号的符号。稍后在文档I xlink中:使用该符号。这在Chrome中运行良好,箭头出现并处于正确的位置:
但是,如果我通过imagemagick像这样转换图像:
convert test.svg test.png
它不起作用。这是我得到的:
“use”似乎被完全忽略,而箭头则在def处呈现。至少,我可以告诉你。
我是否为Imagemagick格式化我的SVG错误来处理这种情况?或者这只是Imagemagick不能正确支持的东西?我一直在寻找一个明确的答案,找不到一种,一种方式。
我还在这里尝试了SVG:http://www.carto.net/svg/samples/symbol.svg并且符号不起作用。所以我倾向于将Imagemagick作为罪魁祸首。
更新:我尝试将def更改为以下内容:
<symbol id="arrow" x="25">
在浏览器中,箭头向右移动25,但在Imagemagick中它会粘到(0,0)。这让我相信它不是关于符号定义,而是更多关于它没有正确翻译它。但是,即使我尝试对“使用”进行直接变换,更好的是,完全删除“使用”,箭头仍会出现。
答案 0 :(得分:2)
更新:此接缝是ImageMagick中默认SVG渲染器中的一个错误,它忽略了x
标记上的y
和use
(并且还忽略了转换) g
标签上的属性)。请尝试使用rsvg后端。
如果你改变了它是否有效:
<use xlink:href="#arrow" x="20" y="50"></use>
要:
<g transform="translate(20 50)">
<use xlink:href="#arrow"></use>
</g>
答案 1 :(得分:0)
您能详细说明 使用IM的原因吗?如果事实证明IM在这种情况下是无用的,那么肯定你必须使用别的东西吗?我是第二个Inkscape。
也就是说,如果你愿意做一些XML操作,也许你仍然可以使用IM。我认为符号的内容可以单独复制到<use>
个位置;如果你有很多相同符号的使用,这是一个混乱的解决方法,但如果你想坚持使用IM,它可能是你前进的唯一途径。我正在研究这是一个让IM混淆的符号系统的理论 - 如果路径是'内联'则可能没问题。