2015-03-13 112 views
0

我渲染的复杂徽标显示不同形状之间的工件。 这些不是艺术品中的空白,而是别名伪影。Safari svg高斯模糊(feGaussianBlur)不会渲染stdDeviation少于1?

我发现了一个很好的解决方案,用于删除这些工件,即掩盖对象并应用stdDeviation值较低(0.125)的非常轻微的高斯模糊(feGaussianBlur)。 Chrome浏览器,Firefox甚至IE浏览器都能很好地显示出来。不过,桌面Safari(8.0)似乎总是将模糊效果看作值至少为1px(或者看起来似乎是这样),使其变得模糊不清,无法成为标识的可接受表示。

有没有办法让safari支持0到1之间的值?

回答

1

我发现,设置模糊为0的stdDeviation不得不在所有浏览器的预期效果。 Safari需要将颜色插值滤镜设置为“sRGB”(其他浏览器默认为:SVG gaussian blur in Safari unexpectedly lightens image)。

这里就是我结束了,它似乎始终工作,但我们将使用PNG现在和补偿喜DPI设备:

<filter id="blur" x="0%" y="0%" width="100%" height="100%" color-interpolation-filters="sRGB"> 
     <feGaussianBlur in="SourceGraphic" stdDeviation="0" /> 
    </filter> 
0

您可以使用<feComponentTransfer>feFuncA>元素调整模糊。以下内容将加强您的模糊效果,但如果不是,请使用tableValues数组玩弄隐藏您的工件。

<feComponentTransfer > 
    <feFuncA type="table" tableValues="0 0 0.5 1"/> 
</feComponentTransfer>