【发布时间】:2018-02-07 21:36:32
【问题描述】:
有问题的 SVG(我清除了与问题无关的所有内容):
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 330 360">
<defs>
<path id="SVGID_1_" d="M166.3,7.4c-1.2,0-2.4,0-3.6,0c-10.4,0.2-20.9,1.3-26.9,3.8c-31.3,15.1-36.7,36.2-35.4,65.6"/>
</defs>
<clipPath id="SVGID_2_">
<use xlink:href="#SVGID_1_"/>
</clipPath>
<path
clip-path="url(#SVGID_2_)"
d="M166.7 1.5S129-4.3 112.9 3.8c-7.3 3.7-12 11.7-15.5 19.1-5.2 11.2-6.8 36.4-6.8 36.4l15.9 11.4c.2-8.2 6.9-17.4 10.5-25.1 3.9-8.2 1.1-6.7 3.6-8.2 15.4-5.9 30.5-1 46 0 16.5 1.1 33.4-6.4 46 0 2.6 1.5 1.6-.6 3.6 8.2 1.6 6.8 12 18.8 10.5 25.1l15.9-11.4s-1.6-25.2-6.8-36.4c-3.4-7.4-8.2-15.4-15.5-19.1-15.9-8.1-53.6-2.3-53.6-2.3z"/>
</svg>
当我使用识别通过 Imagemagick 7.0.7-22 Q16 x86_64 运行此文件时:
magick identify -verbose clipPath.svg
输出结束于:
identify: non-conforming drawing primitive definition `path' @ error/draw.c/DrawImage/3284.
我已将问题缩小到第 12 行:
clip-path="url(#SVGID_2_)"
清理 SVG 并不是一个真正的选择,因为用户将能够上传自己的 SVG。所以问题是:
A) 为什么会这样?
B) 有什么可以对 Imagemagick 做的事情来解决这个问题吗?
【问题讨论】:
-
magick identify -verbose clipPath.svg 在 Windows 10 上对我来说工作正常,没有错误/警告版本 7.0.5-5
-
magick identify -verbose on your svg file适用于我在Mac OSX Sierra和IM 7.0.7.22上
-
它可能是您与 ImageMagick 一起使用的 SVG 委托。它可能是 IM 内部 MSVG(不太好)、RSVG 委托库(更好)或 Inkscape(可能是最好的)。你用的是哪个?或者可能是旧版本的 RSVG 或 Inkscape。我上面的测试工作正常是使用 librsvg @2.40.18_0
标签: svg imagemagick