0

0

SVG进阶|SVG过滤器(SVG Filters)

PHP中文网

PHP中文网

发布时间:2016-05-17 09:07:25

|

4018人浏览过

|

来源于php中文网

原创


  svg过滤器可以为svg图形添加一些非常酷的效果,如阴影、模糊和高光等效果。

  svg过滤器的例子

  先来看一个简单的svg过滤器的例子,直观的感受一些它的效果:


  
  

 

 

  在这个例子中,对一个SVG椭圆形应用了模糊滤镜,得到的结果如下:
990.png
  SVG过滤器的输入和输出

  SVG过滤器在应用过滤效果的时候需要一个输入源。这个输入源可以是一个图形,或图形的alpha通道,或另一个过滤器的输出值。

  SVG过滤器可以从输入源中产生一个输出图像。一个过滤器的输出可以是另一个过滤器的输入,这样,过滤器可以被链接起来使用。

  下面是一张SVG过滤器输入和输出的说明图片:

  991.png

  SVG过滤器的输入通常在SVG滤镜的in属性中指定,例如:



      如果你需要将一个SVG过滤器的输出作为另一个过滤器的输入,需要在输出元素上添加一个result属性:


        这样,在另一个过滤器中,可以通过在in属性中设置值为blur来使用它作为输入源。

        过滤器的尺寸

        一个SVG过滤器的尺寸由x、y、width和height属性来决定。

        x和y属性是相对于输入源图形的x和y属性来设定。由于过滤器的输出图形通常会比输入图形大(例如对图形添加模糊效果),因此,我们通常需要将x和y属性设置为负值来剪切掉多出的部分。

        width和height属性指定过滤器的宽度和高度,大多数时候你需要指定宽度和高度大于输出图像的尺寸,以便于在剪切后尺寸和原来的图形基本相等。

        多重过滤器

        你可以通过元素来同时使用多个SVG过滤器。看下面的例子:

      
          
              
              
       
              
                  
                  
              
          
      
       
      

      这个例子中创建了一个SVG过滤器,它包括两个滤镜元素:。偏移滤镜的输入源是椭圆图形的alpha通道,高斯模糊滤镜的输入源是偏移滤镜的输出。

      元素将原始图像和高斯模糊滤镜的输出相结合。在元素中的结合顺序决定了它们的显示顺序,后输入的元素会显示在先输入元素的上面。


        上面的代码得到的结果类似于一个drop阴影效果,下面是输出的结果:
                    992.png
        高斯模糊滤镜

        SVG高斯模糊滤镜可以将图像进行模糊处理。要使用高斯模糊滤镜,可以使用元素。下面是一个例子:

      
          
              
          
      
      


       这个例子中,在元素中使用了滤镜。在矩形元素中的style属性中使用filter来指向这个SVG过滤器,得到的结果如下面图像所示:  


      993.png

      模糊的尺寸

        元素的stdDeviation属性决定图像的模糊尺寸大小。它的数值越大,图像的模糊尺寸越大。在下面的例子中分别设置了三个不同的stdDeviation值。

      
          
              
          
          
              
          
          
              
          
      
       
      
      
      

       得到的返回结果如下:

      蚂蚁PPT
      蚂蚁PPT

      AI在线智能生成PPT

      下载


      994.png

        通过ALPHA通道进行模糊

        在上面的例子中,过滤器的输入源是SourceGraphic,意思是使用图形的RGB颜色来作为输入源。你也可以使用图形的alpha通道来作为输入源,只需要将元素的in属性设置为SourceAlpha即可。下面是一个例子:

      
          
              in="SourceAlpha" stdDeviation="10" />
          
      
      


        得到的返回结果如下:
      995.png
        注意观察,矩形的填充色是绿色的,但是通过alpha通道来进行模糊之后,得到的结果是黑白色的图像。

        偏移滤镜

        偏移滤镜会将输入图形进行移动之后作为结果输出。你可以使用它来上下左右移动图形。通常偏移滤镜都是用于制作drop阴影效果。下面是一个例子:

      
          
              
          
      
      
      

        得到的结果如下所示:

      996.png
        这个例子中定义了两个矩形,它们的尺寸和位置都相同。紫色描边的矩形被应用了偏移滤镜,使它相对于原来的位置向右移动了80个单位,向下移动了20各单位。

        颜色矩阵滤镜

        颜色矩阵滤镜用来在图形的颜色中应用矩阵变换。下面是一个例子:

      
          
              
          
      
      
      

      矩阵的值有元素中的values属性提供。这里共有4X5=20个值。在原始图像中它们的值类似下面的样子:

      0 0 0 red   0
      0 0 0 green 0
      0 0 0 blue  0
      0 0 0 1     0


        上面的代码得到的返回结果如下:

      997.png

        注意观察,左边的图形应用了颜色矩阵滤镜,它原来有一个绿色的填充颜色,在使用了颜色矩阵之后只剩下描边了。右边是没有使用颜色矩阵的图形。

        混合(BLEND)滤镜

        混合滤镜可以将多个输入滤镜混合为一个。下面是一个例子:

      
        
          
            
            
       
            
       
          
        
       
        
       
      

      这个例子声明了三个滤镜。第一个偏移滤镜,第二个是高斯模糊滤镜。高斯模糊滤镜的输入是偏移滤镜的输出。第三个滤镜有两个输入,它将这两个输入进行了混合:

      上面代码得到的结果如下:
      998.png

      以上就是SVG进阶|SVG过滤器(SVG Filters)的内容,更多相关内容请关注PHP中文网(www.php.cn)!

      相关专题

      更多
      C++ 高级模板编程与元编程
      C++ 高级模板编程与元编程

      本专题深入讲解 C++ 中的高级模板编程与元编程技术,涵盖模板特化、SFINAE、模板递归、类型萃取、编译时常量与计算、C++17 的折叠表达式与变长模板参数等。通过多个实际示例,帮助开发者掌握 如何利用 C++ 模板机制编写高效、可扩展的通用代码,并提升代码的灵活性与性能。

      10

      2026.01.23

      php远程文件教程合集
      php远程文件教程合集

      本专题整合了php远程文件相关教程,阅读专题下面的文章了解更多详细内容。

      29

      2026.01.22

      PHP后端开发相关内容汇总
      PHP后端开发相关内容汇总

      本专题整合了PHP后端开发相关内容,阅读专题下面的文章了解更多详细内容。

      21

      2026.01.22

      php会话教程合集
      php会话教程合集

      本专题整合了php会话教程相关合集,阅读专题下面的文章了解更多详细内容。

      21

      2026.01.22

      宝塔PHP8.4相关教程汇总
      宝塔PHP8.4相关教程汇总

      本专题整合了宝塔PHP8.4相关教程,阅读专题下面的文章了解更多详细内容。

      13

      2026.01.22

      PHP特殊符号教程合集
      PHP特殊符号教程合集

      本专题整合了PHP特殊符号相关处理方法,阅读专题下面的文章了解更多详细内容。

      11

      2026.01.22

      PHP探针相关教程合集
      PHP探针相关教程合集

      本专题整合了PHP探针相关教程,阅读专题下面的文章了解更多详细内容。

      8

      2026.01.22

      菜鸟裹裹入口以及教程汇总
      菜鸟裹裹入口以及教程汇总

      本专题整合了菜鸟裹裹入口地址及教程分享,阅读专题下面的文章了解更多详细内容。

      55

      2026.01.22

      Golang 性能分析与pprof调优实战
      Golang 性能分析与pprof调优实战

      本专题系统讲解 Golang 应用的性能分析与调优方法,重点覆盖 pprof 的使用方式,包括 CPU、内存、阻塞与 goroutine 分析,火焰图解读,常见性能瓶颈定位思路,以及在真实项目中进行针对性优化的实践技巧。通过案例讲解,帮助开发者掌握 用数据驱动的方式持续提升 Go 程序性能与稳定性。

      9

      2026.01.22

      热门下载

      更多
      网站特效
      /
      网站源码
      /
      网站素材
      /
      前端模板

      精品课程

      更多
      相关推荐
      /
      热门推荐
      /
      最新课程
      麻省理工大佬Python课程
      麻省理工大佬Python课程

      共34课时 | 5.2万人学习

      php-src源码分析探索
      php-src源码分析探索

      共6课时 | 0.5万人学习

      PHP面向对象基础课程(更新中)
      PHP面向对象基础课程(更新中)

      共12课时 | 0.7万人学习

      关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
      php中文网:公益在线php培训,帮助PHP学习者快速成长!
      关注服务号 技术交流群
      PHP中文网订阅号
      每天精选资源文章推送

      Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号