svg基础(十)滤镜-feMerge(多滤镜叠加滤镜)

12 篇文章 1 订阅
本文介绍了如何在SVG中使用feMerge和feMergeNode元素同时应用多个滤镜效果,如feGaussianBlur和feOffset,通过result属性传递中间结果,以及SourceAlpha和SourceGraphic的区别,以实现复杂的图像处理,如模糊后加位移。
摘要由CSDN通过智能技术生成

feMerge:多滤镜叠加滤镜

允许同时应用滤镜效果而不是按顺序应用滤镜效果。利用result存储别的滤镜的输出可以实现这一点,然后在一个 <feMergeNode>子元素中访问它

1 语法

<feMerge>
    <feMergeNode in=""></feMergeNode>
</feMerge>

2 feMergeNode属性

  • in SourceAlpha,SourceGraphic,其他滤镜的result

SourceAlpha和SourceGraphic的区别:

SourceGraphic的颜色是全彩

SourceAlpha是一个与图像具有相同尺寸的提取了其中的黑色部分可以使用它来创建更好的阴影

3 示例

 <svg>
        <defs>
            <filter id="gaussian" x="0" y="0">
                <feGaussianBlur in="SourceAlpha" stdDeviation="5" result="blur"></feGaussianBlur>
                <feOffset in="blur" dx="10" dy="10" result="offsetBlur"></feOffset>
                <feMerge>
                    <feMergeNode in="offsetBlur" />
                    <feMergeNode in="SourceGraphic" />
                </feMerge>
            </filter>
        </defs>
        <rect x="10" y="10" width="100" height="100" fill="black" filter="url(#gaussian)"></rect>
    </svg>
  • <feGaussianBlur in=“SourceAlpha” stdDeviation=“5” result=“blur” /> 会生成一个模糊效果

result=‘blur’,这个是 SVG 的一个特性,不同滤镜作用的效果可以通过 result 产出一个中间结果(也称为 primitives 图元),其他滤镜可以使用 in 属性导入不同滤镜产出的 result,继续操作。

  • <feOffset> 滤镜还是很好理解的,使用 in 拿到了上一步的结果 result = ‘blur’,然后做了一个简单的位移。
  • <feMergeNode in=“offsetBlur” /> 表示了上述两个滤镜的最终输出结果 offsetBlur,也就是阴影的部分
  • <feMergeNode in=“SourceGraphic” /> 中的 in=“SourceGraphic” 关键词表示图形元素自身将作为 原语的原始输入

在不同滤镜中利用 result 和 in 属性,可以实现在前一个基本变换操作上建立另一个操作,比如我们的例子中就是添加模糊后又添加位移效果。

在这里插入图片描述

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值