如何在IMagick中使用SVG CSS样式?

时间:2018-03-27 18:37:41

标签: php css svg imagemagick imagick

即使<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似乎理解了样式属性。

3 个答案:

答案 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

enter image description here

您的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