svg滤镜之高斯滤镜、径向渐变

本文深入探讨SVG滤镜,通过示例解释如何使用filter元素和滤镜基元创建复杂的图形效果。具体展示了如何使用feColorMatrix、feGaussianBlur、feOffset、feFlood、feComposite和feMerge等基元,结合滤镜属性,实现红色高斯模糊效果。此技术适用于前端图形渲染,提升网页视觉体验。
摘要由CSDN通过智能技术生成

SVG阅读器处理一个图形对象时,会将对象呈现在位图输出设备上,它可以将对象的描述信息转化为一组对应的像素。在使用滤镜时,SVG阅读器不会直接将图形渲染为最终结果,而是先将像素保存到临时位图中,然后将滤镜指定的操作应用到该临时位图,其结果作为最终图形。

在SVG中,使用filter元素指定一组操作(也叫基元),在渲染图形对象时,将该操作应用在最终图形上。

filter标记之间就是我们想要的滤镜基元,每个基元有一个或多个输入,但是只有一个输出,输入可以是原始图形(SourceGraphic)、图形的阿尔法通道(不透明度,SourceAlpha)或者是前一个滤镜基元的输出

filter元素有一些属性用来描述该滤镜的裁剪区域。通过x,y,width,height属性定义一个滤镜范围,这些属性默认情况是按照对象的边界框计算的,即filterUnits属性的默认值为objectBoundingBox,如果要按照用户单位制定边界,则需要设置该属性值为userSpaceOnUse

还可以用primitiveUnits属性为基元操作指定单位,默认值为userSpaceOnUse,如果设置为objectBoundingBox则会按照图形尺寸的百分比来表示单位。

feMerge基元包裹一个feMergeNode元素列表,每个元素都指定一个输入。这些输入按照出现的顺序叠加。

<defs>
	<filter id="filter_red" x="-40%" y="-40%" width="180%" height="180%" filterUnits="userSpaceOnUse">
			<feColorMatrix result="offsetblur" in="offOut" type="matrix" />
			<!-- <feGaussianBlur in="SourceAlpha" stdDeviation="10" /> -->
			<feGaussianBlur in="SourceAlpha" stdDeviation="10" result="blur" />
			<feOffset in="blur" dx="0" dy="0" result="offsetBlur" stdDeviation="2" />
			<feFlood flood-color="red" flood-opacity="5" result="offsetColor" /> 
			//该滤镜用flood-color (en-US)元素定义的颜色和flood-opacity (en-US)元素定义的不透明度填充了滤镜子区域
			<feComposite in="offsetColor" in2="offsetBlur" operator="in" result="offsetBlur" />
			//滤镜执行两个输入图像的智能像素组合,在图像空间中使用以下Porter-Duff合成操作之一:over、in、atop、xor。
			<feMerge>
				<feMergeNode />  //高斯模糊
				<feMergeNode in="SourceGraphic" />  //原始图形
			</feMerge>
	</filter>
	<radialGradient id='fill_red' cx='50%' cy='50%'>
			<stop offset='0%' style='stop-color:white'></stop>
			<stop offset='70%' style='stop-color:red'></stop>
	</radialGradient>
</defs>
<circle id='pilot_lamp' cx='300' cy='400' r='5' style='fill:url(#fill_red);filter:url(#filter_red)'></circle>

实现效果
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哆啦咪唏

看到这里了,不留下点什么吗

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值