📅  最后修改于: 2023-12-03 15:20:24.414000             🧑  作者: Mango
SVG(Scalable Vector Graphics)是一种基于XML语法的标记型图形格式,可以描述二维向量图形。在SVG中,我们可以通过使用滤镜属性来实现一些常规图形处理算法所能实现的功能,如模糊、阴影、颜色变换等。
<filter id="filter_id" x="0%" y="0%" width="100%" height="100%">
<feFilterFunctionType attr1 = "value1" attr2 = "value2" ... />
</filter>
feFilterFunctionType是各种滤镜类型(如 <feGaussianBlur>
, <feColorMatrix>
)的父标签,它们的详细属性分类有很多,下面简单说明几种常见的滤镜类型。
高斯模糊可以让图片变得模糊,常常用于背景。
<filter id="blur">
<feGaussianBlur stdDeviation="3" />
</filter>
颜色矩阵可以调整颜色,比如转换成灰度图像。
<filter id="gray">
<feColorMatrix type="saturate" values="0" />
</filter>
阴影可以让图像产生阴影效果,它可以根据不同颜色定义不同的阴影。
<filter id="shadow">
<feDropShadow dx="2" dy="2" stdDeviation="2" flood-color="rgba(0,0,0,0.3)" />
</filter>
<svg width="500" height="500">
<defs>
<filter id="shadow" x="-20%" y="-20%" width="150%" height="150%">
<feDropShadow dx="2" dy="2" stdDeviation="2" flood-color="rgba(0,0,0,0.3)" />
</filter>
<filter id="blur">
<feGaussianBlur stdDeviation="2" />
</filter>
</defs>
<rect x="50" y="50" width="100" height="100" filter="url(#shadow)" fill="#FF5722"/>
<rect x="175" y="50" width="100" height="100" filter="url(#blur)" fill="#FF9800" />
<rect x="300" y="50" width="100" height="100" filter="url(#shadow)" fill="#FFC107" />
</svg>
上述代码在 SVG 画布上绘制了三个正方形,分别使用了阴影和模糊滤镜。效果图如下所示: