【问题标题】:Weird artefacts with <feGaussianBlur/> on images in safari and mobile browsers<feGaussianBlur/> 在 safari 和移动浏览器中的图像上出现奇怪的人工制品
【发布时间】:2020-05-02 08:35:33
【问题描述】:

我目前正在模糊图像,并在包含图像时将其用作背景。 我正在使用以下 svg 过滤器,过滤器使用feGaussianBlurfeColorMatrix 分两步展开。这在 Chrome 中完美呈现,但在 Safari 和移动浏览器中,我看到了奇怪的伪影。

<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
    <filter
      id="blurry"
      width="150%"
      height="150%"
      x="-25%"
      y="-25%"
      colorInterpolationFilters="sRGB"
    >
      <feGaussianBlur stdDeviation="45" />
      <feColorMatrix
        type="matrix"
        values="1 0 0 0 0  0 1 0 0 0  0 0 1 0 0 0 0 0 10 0"
      />
      <feGaussianBlur stdDeviation="45" />
      <feColorMatrix
        type="matrix"
        values="1 0 0 0 0  0 1 0 0 0  0 0 1 0 0 0 0 0 10 0"
      />
      <feComposite in2="SourceGraphic" operator="in" />
    </filter>
</svg>

然后在我的 CSS 中使用:

-webkit-filter: url('#blurry');
        filter: url('#blurry');

想要的结果(在桌面上):

我得到的结果:

它显示了这些奇怪的差距..

我注意到的一些事情:

  • 更改过滤器大小和位置不起作用
  • 在某些图像上我看不到这些人工制品
  • 更改过滤器stdDeviation 不起作用

这可能与我的图像分辨率有关吗?

【问题讨论】:

  • 你的图片有什么问题?如果没有它应该是什么样子的例子,就不清楚了。您能否发布显示问题的原始 SVG(或必要时缩减的 SVG)?
  • 是的,@PaulLeBeau

标签: css svg svg-filters gaussianblur


【解决方案1】:

这些模糊不清 - 因此 Safari 可能会降低滤镜分辨率。虽然它已被弃用并且我认为已从 Firefox 和 Chrome 中删除 - 您可以尝试在过滤器元素中设置显式 filterRes,因为 Safari 仍支持该功能。

(“colorInterpolationFilters”也应该是“color-interpolation-filters”)

【讨论】:

  • 谢谢,会试试的。我忘了说,我用的是 React,所以每个属性都应该用驼峰写法!
  • 不幸的是,将 filterRes 添加到我的过滤器中没有任何效果,即使它确实有效,我想我也必须寻找一种替代方法来缩小过滤器的尺寸。
  • 尝试设置 filterRes="500" 然后 1000 和 2000 - 看看会发生什么
猜你喜欢
  • 2016-12-29
  • 2016-07-16
  • 1970-01-01
  • 1970-01-01
  • 2020-04-25
  • 1970-01-01
  • 2018-01-22
  • 2018-02-28
  • 2022-01-16
相关资源
最近更新 更多