SVG feGaussianBlur和feColorMatrix过滤器无法在Chrome中运行?

时间:2017-11-10 09:20:48

标签: google-chrome svg gaussianblur

我尝试使用此代码http://bl.ocks.org/nbremer/0e98c72b043590769facc5e829ebf43f中的过滤器。在Win 7上的Firefox 56(64位)中取得的效果很好,但在Chrome 62(64位)中却很奇怪。颜色更浅,效果看起来不像FF那样光滑。

我已经阅读了很多关于Safari没有正确显示这些过滤器的问题,但我找不到有关Chrome的任何信息。

请看下面的截图:

  • 火狐

enter image description here

enter image description here

知道导致差异的原因是什么以及如何在Chrome中修复它?

1 个答案:

答案 0 :(得分:2)

应用的Color Matrix过滤器读取

<feColorMatrix mode="matrix" values="1 0 0 0 0  0 1 0 0 0  0 0 1 0 0  0 0 0 19 -9" />

理论上 - 在数学上与以下的组件转换过滤器相同:

<feComponentTransfer>
  <feFuncA type="linear" slope="19" intercept="-9" />
</feComponentTransfer>

在实践中,实施似乎有所作为。对我来说,第二个版本在Chrome 62(Linux)中给出了预期的结果,而第一个版本如上所述被淘汰。

不幸的是,这两个版本都不能与Firefox for Windows和Safari一起使用。

Codepen

过滤器尝试创建一种&#34; cutoff&#34;值表示:如果不透明度低于theshold值,则将其设置为0,如果高于该值,则将其设置为1.但实际上是一个小的中间区域(0.437&lt; opacity&lt; 0.526),其中产生的不透明度为其间。

如果你想使用真正离散的函数,那就是这个:

<feComponentTransfer>
  <feFuncA type="discrete" tableValues="0 1" />
</feComponentTransfer>

Codepen

这似乎适用于Firefox for Windows。