即使<style>
在SVG的<def>
内,似乎(PHP)Imagick也不接受使用CSS的样式。那是对的吗?我找不到这方面的参考。
如果是这样,那么仍然可以获得所需结果的方法是什么?也许用他们的定义替换所有类?所以,例如,如果有
.some-class {
stroke-dasharray: 5 5;
}
然后将class="some-class"
替换为stroke-dasharray="5 5"
,或者替换为style="stroke-dasharray: 5 5;"
,因为Imagick似乎理解了样式属性。
答案 0 :(得分:1)
似乎是librsvg中的一个错误。如果我将type="text/css"
添加到<style>
标记,则它就像魅力一样。
答案 1 :(得分:1)
我将您的代码保存为test.svg文件并使用Imagemagick 6.9.9.30 Q16 Mac OSX和RSVG(librsvg @ 2.42.2_0),它运行正常。我得到一个小红场:
convert test.svg test.png
您的RSVG版本是什么。
convert -list format
会告诉你。
也许你需要升级RSVG或你的Imagemagick版本。
答案 2 :(得分:1)
我最近遇到了同样的问题,由于缺少软件包,我在本地主机上工作,但在服务器上却没有。 我从Imagick安装了inkscape和SVG代(实际上我在使用Intervention Image,并且驱动程序设置为imagick)
apt-get install inkscape
编辑:起初SVG一代根本没有工作,我遵循了这个线程Imagick SVG to JPG error no decode delegate
但是,此后,SVG一代开始工作了,不幸的是,SVG渲染的PNG是灰度的。我以为SVG中的样式丢失了,该线程帮助了我: how to resize an SVG with Imagick/ImageMagick