高斯模糊导致图像周围的白框

时间:2011-06-04 09:59:05

标签: c# wpf image blur

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

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

正如您所看到的,半径很大,因为图像很大,我需要它真的模糊。然而,对于一个大的半径,我在我的图像周围得到一个轻框,如附图所示。我怎么能抑制这个?

如果您想知道:结果与RenderingBias无关。边界也以质量模式生成。

White border around image

2 个答案:

答案 0 :(得分:10)

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

应用ClipToBounds基本上会切断原本混合到白色的位置,这就是为什么你会得到一个白框。

除非你愿意更多地剪辑图像,否则这只是模糊的工作方式。

Screenshot of cliptobounds

答案 1 :(得分:3)

在模糊之前,您可以使用图像边框中的像素填充图像。通过这样做,您可以确保使用相似颜色的像素模糊边框周围的模糊像素,并且白色边框将消失。当然,模糊后将图像裁剪回原始大小。