【问题标题】:Gaussian blur leads to white frame around image高斯模糊导致图像周围出现白框
【发布时间】:2011-09-08 07:51:23
【问题描述】:

我正在对 WPF 中的图像应用模糊效果,如下所示:

<Image ClipToBounds="True">
    <Image.Effect>
        <BlurEffect Radius="100" KernelType="Gaussian" RenderingBias="Performance" />
    </Image.Effect>
</Image>

如您所见,半径很大,因为图像很大,我需要它真的模糊。但是,对于这么大的半径,我的图像周围会出现一个光框,如附图所示。我怎样才能抑制它?

如果您想知道:结果与RenderingBias 无关。在质量模式下也会生成边框。

【问题讨论】:

    标签: c# wpf image blur


    【解决方案1】:

    发生的事情是与 ClipToBounds 一起模糊的结果。由于您使用的是高斯模糊,边缘会自然地融入背景(白色)。

    应用 ClipToBounds 基本上会切断它本来会融入白色的地方,这就是为什么你会得到一个白色框架的原因。

    除非您愿意更多地剪辑图像,否则很遗憾这就是模糊的工作原理。

    【讨论】:

    • 这就是我的想法 - 所以:有没有另一种模糊图像的方法,使其不会像那样褪色?例如:当我使用 Paint.NET 对半径为 100 的图像应用高斯模糊滤镜时,我看不到那个边框。
    • WPF 仅支持高斯模糊和框模糊(更糟)。唯一的解决方法是删除 ClipToBounds,因为它会带来更自然的外观。
    • 嗯。我可以在代码中做些什么吗?我想做的是:获取源图像,创建模糊版本并使用不透明蒙版将它们混合在一起。
    • 我想你可以把它放在模糊图像后面来减少白色效果。我认为您不需要不透明蒙版,因为模糊部分会部分不透明。
    【解决方案2】:

    在模糊之前,您可以使用图像边框的像素填充图像。通过这样做,您可以确保边界周围的模糊像素将使用相似颜色的像素进行模糊,并且白色的边界将消失。当然,经过模糊裁剪后,图像会恢复到原来的大小。

    【讨论】:

      猜你喜欢
      • 2013-02-08
      • 2015-11-05
      • 2013-01-10
      • 2017-06-30
      • 1970-01-01
      • 2015-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多