Размытие по Гауссу приводит к появлению белой рамки вокруг изображения - PullRequest
19 голосов
/ 04 июня 2011

Я применяю эффект размытия к изображению в WPF следующим образом:

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

Как видите, радиус большой, потому что изображение большое, и мне нужно, чтобы оно было действительно размытым. Однако для такого большого радиуса я получаю легкую рамку вокруг своего изображения, как показано на прилагаемом изображении. Как я могу подавить это?

На случай, если вам интересно: результат тот же, что и RenderingBias. Граница также создается в режиме качества.

White border around image

Ответы [ 2 ]

10 голосов
/ 04 июня 2011

То, что происходит, является результатом размытия вместе с ClipToBounds.Так как вы используете размытие по Гауссу, края будут естественным образом сливаться с фоном (белым).

Применение ClipToBounds в основном обрезает то место, которое в противном случае смешалось бы с белым, поэтому вы получаетебелая рамка

Если вы не готовы обрезать изображение еще больше, к сожалению, именно так работают размытия.

Screenshot of cliptobounds

3 голосов
/ 06 июня 2011

Перед размытостью изображения можно дополнить, используя пиксели от границы изображения.Делая это, вы можете гарантировать, что размытые пиксели вокруг границы будут размыты, используя пиксели аналогичного цвета, и беловатая граница исчезнет.Конечно, после размытия обрежьте изображение обратно до исходного размера.

...