Размытие по Гауссу приводит к белой рамке вокруг изображения
Я применяю эффект размытия к изображению в WPF, например:
<Image ClipToBounds="True">
<Image.Effect>
<BlurEffect Radius="100" KernelType="Gaussian" RenderingBias="Performance" />
</Image.Effect>
</Image>
Как вы можете видеть, радиус большой, потому что изображение велико, и мне нужно, чтобы оно было действительно размытым. Тем не менее, для большого радиуса я получаю легкую рамку вокруг моего изображения, как показано на прилагаемом изображении. Как я могу подавить это?
В случае, если вам интересно: результат тот же, что и у RenderingBias
. Граница также создается в режиме качества.
![White border around image]()
Ответы
Ответ 1
Что происходит в результате размытия вместе с ClipToBounds. Поскольку вы используете размытие Gaussian, края будут естественным образом смешаться с фоном (белый).
Применение ClipToBounds в основном отключается там, где оно иначе было бы смешано с белым, поэтому вы получаете белый кадр.
Если вы не хотите клипать изображение еще больше, к сожалению, это просто то, как работают размытия.
![Screenshot of cliptobounds]()
Ответ 2
Перед тем, как размыть, вы можете поместить изображение, используя пиксели с границы изображения. Поступая таким образом, вы можете убедиться, что размытые пиксели вокруг границы будут размыты, используя пиксели одинакового цвета, а беловатая граница исчезнет. Конечно, после размытия изображения изображение возвращается к исходному размеру.