SVG - Filtros

SVG usa o elemento <filter> para definir filtros. O elemento <filter> usa um atributo id para identificá-lo exclusivamente. Os filtros são definidos dentro dos elementos <def> e, a seguir, são referenciados por elementos gráficos por seus ids.

O SVG fornece um rico conjunto de filtros. A seguir está a lista dos filtros comumente usados.

  • feBlend
  • feColorMatrix
  • feComponentTransfer
  • feComposite
  • feConvolveMatrix
  • feDiffuseLighting
  • feDisplacementMap
  • feFlood
  • feGaussianBlur
  • feImage
  • feMerge
  • feMorphology
  • feOffset - filtro para sombras projetadas
  • feSpecularLighting
  • feTile
  • feTurbulence
  • feDistantLight
  • fePointLight
  • feSpotLight

Declaração

A seguir está a declaração de sintaxe de <filter>elemento. Mostramos apenas os atributos principais.

<filter
   filterUnits="units to define filter effect region"
   primitiveUnits="units to define primitive filter subregion"
   
   x="x-axis co-ordinate" 
   y="y-axis co-ordinate"     
   
   width="length"
   height="length"
   
   filterRes="numbers for filter region"
   xlink:href="reference to another filter" >
</filter>

Atributos

Sr. Não. Nome e Descrição
1 filterUnits- unidades para definir a região do efeito do filtro. Ele especifica o sistema de coordenadas para os vários valores de comprimento dentro do filtro e para os atributos que definem a sub-região do filtro. Se filterUnits = "userSpaceOnUse", os valores representam os valores no sistema de coordenadas do usuário atual em vigor no momento em que o elemento 'filtro' é usado. Se filterUnits = "objectBoundingBox", os valores representam os valores em frações ou porcentagens da caixa delimitadora no elemento de referência no local no momento em que o elemento 'filtro' é usado. O padrão é userSpaceOnUse.
2 primitiveUnits- unidades para definir a região do efeito do filtro. Ele especifica o sistema de coordenadas para os vários valores de comprimento dentro do filtro e para os atributos que definem a sub-região do filtro. Se filterUnits = "userSpaceOnUse", os valores representam os valores no sistema de coordenadas do usuário atual em vigor no momento em que o elemento 'filtro' é usado. Se filterUnits = "objectBoundingBox", os valores representam os valores em frações ou porcentagens da caixa delimitadora no elemento de referência no local no momento em que o elemento 'filtro' é usado. O padrão é userSpaceOnUse.
3 x- coordenada do eixo x da caixa delimitadora do filtro. Defeault é 0.
4 y- coordenada do eixo y da caixa delimitadora do filtro. O padrão é 0.
5 width- largura da caixa delimitadora do filtro. O padrão é 0.
6 height- altura da caixa delimitadora do filtro. O padrão é 0.
7 filterRes - números que representam regiões de filtro.
8 xlink:href - usado para se referir a outro filtro.

Exemplo

testSVG.htm
<html>
   <title>SVG Filter</title>
   <body>
   
      <h1>Sample SVG Filter</h1>
   
      <svg width="800" height="800">
      
         <defs>
            <filter id="filter1" x="0" y="0">
               <feGaussianBlur in="SourceGraphic" stdDeviation="8" />
            </filter>
            
            <filter id="filter2" x="0" y="0" width="200%" height="200%">
               <feOffset result="offOut" in="SourceAlpha" dx="20" dy="20" />
               <feGaussianBlur result="blurOut" in="offOut" stdDeviation="10" />
               <feBlend in="SourceGraphic" in2="blurOut" mode="normal" />
            </filter>
         </defs>
         
         <g>
            <text x="30" y="50" >Using Filters (Blur Effect): </text>
            <rect x="100" y="100" width="90" height="90" stroke="green" stroke-width="3"
            fill="green" filter="url(#filter1)" />      
         </g> 
         
      </svg>
   
   </body>
</html>
  • Dois elementos <filter> definidos como filter1 e filter2.

  • O efeito de filtro feGaussianBlur define o efeito de desfoque com a quantidade de desfoque usando stdDeviation.

  • in = "SourceGraphic" define que o efeito é aplicável a todo o elemento.

  • O efeito de filtro feOffset é usado para criar o efeito de sombra. in = "SourceAlpha" define que o efeito é aplicável para a parte alfa dos gráficos RGBA.

  • Os elementos <rect> vinculam os filtros usando o atributo filter.

Resultado

Abra textSVG.htm no navegador Chrome. Você pode usar o Chrome / Firefox / Opera para visualizar a imagem SVG diretamente sem qualquer plugin. O Internet Explorer 9 e superior também oferece suporte à renderização de imagens SVG.

Filtro com efeito de sombra

<html>
   <title>SVG Filter</title>
   <body>
      
      <h1>Sample SVG Filter</h1>
      
      <svg width="800" height="800">
      
         <defs>
            <filter id="filter1" x="0" y="0">
               <feGaussianBlur in="SourceGraphic" stdDeviation="8" />
            </filter>
            
            <filter id="filter2" x="0" y="0" width="200%" height="200%">
               <feOffset result="offOut" in="SourceAlpha" dx="20" dy="20" />
               <feGaussianBlur result="blurOut" in="offOut" stdDeviation="10" />
               <feBlend in="SourceGraphic" in2="blurOut" mode="normal" />
            </filter>
         </defs>
         
         <g>
            <text x="30" y="50" >Using Filters (Shadow Effect): </text>
            <rect x="100" y="100" width="90" height="90" stroke="green" stroke-width="3"
            fill="green" filter="url(#filter2)" />
         </g>
         
      </svg>
   
   </body>
</html>

Resultado

Abra textSVG.htm no navegador Chrome. Você pode usar o Chrome / Firefox / Opera para visualizar a imagem SVG diretamente sem qualquer plugin. O Internet Explorer 9 e superior também oferece suporte à renderização de imagens SVG.