滤镜高斯模糊的边界或边框问题的解决和优化

SVG滤镜:高斯模糊边界优化策略
本文探讨了SVG滤镜中高斯模糊在边界处理上出现的问题,当模糊偏量增大时,边界会出现不良效果。提出使用<feComposite>标签结合像素运算作为初步解决方案,通过实例演示如何优化边界,使模糊效果更加自然。建议新手尝试通过调整元素半径和模糊偏量来改善视觉效果。
部署运行你感兴趣的模型镜像

1. 所谓 “高斯模糊的边界问题” 介绍

相信有很多刚刚接触SVG滤镜模糊的新人们都可能遇到过这种问题:
1. 当模糊偏量很小的时候:

<svg width="100%" height="100%" viewBox="0 0 150 360"
     preserveAspectRatio="xMidYMid meet"
     xmlns="http://www.w3.org/2000/svg"
     xmlns:xlink="http://www.w3.org/1999/xlink">
     <filter id="filter1">
        <!--stdDeviation为 1 -->
        <feGaussianBlur in="SourceGraphic" stdDeviation="1" result="Gau1"/>
     </filter>
     <circle cx="40" cy="40" r="10" fill="blue" filter="url(#filter1)"></circle>
</svg>

这是我们期望的并且没有什么问题:
image

  1. 当偏量略大时(对于半径为10时,2偏量的模糊已经出现了问题):
<svg width="100%" height="100%" viewBox="0 0 150 360"
     preserveAspectRatio="xMidYMid meet"
     xmlns="http://www.w3.org/2000/svg"
     xmlns:xlink="http://www.w3.org/1999/xlink">
    <filter id="filter1">
        <!--stdDeviation为 2 -->
        <feGaussianBlur in="SourceGraphic" stdDeviation="2" result="Gau1"/>
    </filter>
        <circle cx="40" cy="40" r="10" fill="blue" filter="url(#filter1)"></circle>
</svg>

高斯模糊的偏量为2时已经出现问题了:
image

<svg width="100%" height="100%" viewBox="0 0 150 360"
     preserveAspectRatio="xMidYMid meet"
     xmlns="http://www.w3.org/2000/svg"
     xmlns:xlink="http://www.w3.org/1999/xlink">
    <filter id="filter1">
        <!--stdDeviation为 3 -->
        <feGaussianBlur in="SourceGraphic" stdDeviation="3" result="Gau1"/>
    </filter>
        <circle cx="40" cy="40" r="10" fill="blue" filter="url(#filter1)"></circle>
</svg>

高斯模糊偏量为3问题更明显
image

2. 问题的初步解决方案

关键标签:< feComposite> 一个神奇的标签,可以将两张图源通过像素点颜色的算术运算而产生不同效果(效果展示可以看我之前的《SVG_filter滤镜标签详解2》)。我们以[stdDeviation=”3”]的边界问题例子开始。

1.步骤一:
<svg width="100%" height="100%" viewBox="0 0 150 360"
     preserveAspectRatio="xMidYMid meet"
     xmlns="http://www.w3.org/2000/svg"
     xmlns:xlink="http://www.w3.org/1999/xlink">
    <filter id="filter1">
        <feGaussianBlur in="SourceGraphic" stdDeviation="3" result="Gau1"/>
        <!--添加<feComposite标签,输入1和输入2都为高斯滤镜,操作类型为“in”>-->
        <feComposite in="Gau1" in2="Gau1" result="Com1" operator="in"/>
    </filter>
        <circle cx="40" cy="40" r="10" fill="blue" filter="url(#filter1)"></circle>
</svg>

当前效果图如下:
image
可见虽然边界被优化了,但仍然不够,所以我们再来一次:

<svg width="100%" height="100%" viewBox="0 0 150 360"
     preserveAspectRatio="xMidYMid meet"
     xmlns="http://www.w3.org/2000/svg"
     xmlns:xlink="http://www.w3.org/1999/xlink">
    <filter id="filter1">
        <feGaussianBlur in="SourceGraphic" stdDeviation="3" result="Gau1"/>
        <feComposite in="Gau1" in2="Gau1" result="Com1" operator="in"/>
        <!--继续引用feComposite标签,两个输入一个为上一个feComposite的滤镜源,另一个为高斯滤镜源-->
        <feComposite in="Com1" in2="Gau1"  operator="in"/>
    </filter>
        <circle cx="40" cy="40" r="10" fill="blue" filter="url(#filter1)"></circle>
</svg>

此时的边界问题已经完全看不出来了
image

通过同时增大< circle>的半径和高斯模糊的偏量,可以在可视圆半径相同的情况下,增加模糊程度,新人们可以试一下哦=0=。

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值