SVG Scalable Vector Graphics

SVG ÂoÃ褸¥ó¤§¤@

SVG ¦³¤@²ÕÂ×´Iªº¿ï¶µ¨Ó³B²z¹Ï¤ù¡]ø»sªº©Î¦ì¤¸¹Ïªº¡^¡C ³o¨Ç¬Oªþ¥[¨ì ª«¥óªº¿ï¶µ¡G¬J¦h¼Ë¤S¦b¬Y¨Ç±¡ªp¤U½ÆÂøªº§Þ¥©¡C

©w¸qÂoÃè

¥ý¦b<defs></defs>ùØÀY¡A¥[¤J<filter></filter>ªº¼ÐÅÒ¡AµM«áµ¹¥¦¤@­Ó id §@¬°ÃѧO¡A±µµÛ´N¬O­n¦bfilterùØÀY©ñ¤JÂoÃè¡C ¦b¦¹¤§«e¡Afilter °£¤F x¡By¡Bwidth¡Bheight ´X­Ó°ò¥»Äݩʥ~¡A¤]´X­Ó¤ñ¸û¯S§OªºÄݩʻݭn³]©w¡G
<defs>
  <filter id="id¦W" x="0" y="0" width="100%" height="100%" filterUnits="userSpaceOnUse">
    ÂoÃè
  </filter>
</defs>

ÂoÃè¦Cªí

SVG ¤¤¥i¥ÎªºÂoÃ褸¥ó¦³¡G

<feGaussianBlur>

©Ò¦³ SVG ÂoÃè³£¦b <defs> ¤¸¥ó¤¤©w¸q¡C <defs> ¤¸¥ó¬O©w¸qªºÁY¼g¡A¥]§t¯S®í¤¸¥ó¡]¨Ò¦pÂoÃè¡^ªº©w¸q¡C

<filter> ¤¸¥ó¥Î©ó©w¸q SVG ÂoÃè¡C <filter> ¤¸¥ó¦³¤@­Ó¥²»Ýªº id ÄݩʨӼÐÃÑÂoÃè¡C µM«á¹Ï§Î«ü¦V­n¨Ï¥ÎªºÂoÃè¡C

<svg height="110" width="110">
  <defs>
    <filter id="f1" x="0" y="0">
      <feGaussianBlur in="SourceGraphic" stdDeviation="15" />
    </filter>
 </defs>
  <rect width="90" height="90" stroke="blue"
          stroke-width="3" fill="blue" filter="url(#f1)" />
  Sorry, your browser does not support inline SVG.
</svg>
Sorry, your browser does not support inline SVG.
ª`·N¨ì¤W­±ªº SVG ¨S¦³©w¸q viewbox¡A ¨Ã¥B¨Ï¥Î 0 ªº¼e«×©M°ª«×¡C¨º¬O¦]¬°¨Ï¥Î¨º­Ó¯S©wªº SVG ¥u©w¸qÂoÃè¡A©Ò¥H¤£§Æ±æ¥¦¦û¥Î¥ô¦óµøÄ± ­¶­±¤WªºªÅ¶¡¡C

<feFlood>

SVG ÂoÃè°ò¤¸¥Î flood-color ©M flood-opacity ©w¸qªºÃC¦â©M¤£³z©ú«×¶ñ¥R¯x§Î°Ï°ì¡C
  <defs>
    <filter id="floodFilter" filterUnits="userSpaceOnUse">
      <feFlood x="50" y="50" width="100" height="100"
          flood-color="green" flood-opacity="0.5"/>
    </filter>
  </defs>
  <use style="filter: url(#floodFilter);"/>

<feOffset>

³o¥Î©ó¦bÂoÃ褺²¾°Ê¤@¤j¶ô¹Ï¹³¡A³q±`¬O SourceGraphic ©Î BackgroundImage¡A¥H«Kµy·L­«·s¹ï»ô¡C ¥H¤U§ë¼vµ²ªG¬O¨Ï¥Î <feOffset> §¹¦¨ªº¡C §Ú­ÌÄ~Äò±µ¦¬¹Ï¹³¨ÃÀ³¥Î¼Ò½kÂoÃè¡C µM«á±N¸Ó¼Ò½k¹Ï¹³°¾²¾¡]¦V¥k 5 ­Ó¹³¯À©M¦V¤U 5 ­Ó¹³¯À¡^ ¡A¨Ã¦sÀx¬°µ²ªG¡§B¡¨¡C µM«á±Nµ²ªG B ¦X¨Ö¨ì­ì©l SourceGraphic ¤U¥H³Ð«Ø®ÄªG¡C
<svg height="120" width="120">
  <defs>
    <filter id="f2" x="0" y="0">
      <feGaussianBlur stdDeviation="5" />
      <feOffset dx="5" dy="5" />
    </filter>
  </defs>
  <rect width="90" height="90" fill="grey" filter="url(#f2)" />   // B
  <rect width="90" height="90" fill="yellow" stroke="black" />    // ­ì©l¹Ï¹³
  Sorry, your browser does not support inline SVG.
</svg>
Sorry, your browser does not support inline SVG.

²Õ¦XÂoÃè°ò¤¸

¦³¦hºØ²Õ¦XÂoÃè°ò¤¸(primitive)ªº¤èªk¡C ¤@ºØ¤èªk¬O±N¤@­ÓÂoÃè°ò¤¸ F2 ¥Î©ó¤@­Óª«¥ó¡AµM«á±N¸Óª«¥ó´O®M¦bÀ³¥Î¤FÂoÃè F2 ªº ¤¤¡C
<filter id="F1">
       <someFilterPrimitive1 />
</filter>

<filter id="F2">
       <someFilterPrimitive2 />
</filter>

<g filter="url(#F2)">
  <rect height="20%" width="15%" filter="url(#F1)"/>
</g>
³q¹L¦b³æ­Ó ¤¸¥ó¤¤±NÂoÃè°ò¤¸Ãì±µ¦b¤@°_¡A¥i¥HÀò±oµ¥®Äªºµ²ªG¡A¦p¤U©Ò¥Ü¡G
<filter id="Fs">
       <someFilterPrimitive1/>
       <someFilterPrimitive2/>
</filter>

<rect height="20%" width="15%" filter="url(#Fs)"/>

°£¤F¯à°÷¶¶§Ç¦a±N¤£¦PÂoÃè°ò¤¸ªºµ²ªGÃì±µ¦b¤@°_¡A¨ä¤¤¨C­Ó³sÄòÂoÃè±N«e¤@­Ó¹LÂo¾¹ªº¿é¥X¡]ºÙ¬°¡§result¡¨¡^§@¬°¨ä¿é¤J¡]ºÙ¬°¡§in¡¨¡^¡A ÁÙ¥i¥H¥H§ó½ÆÂøªº¶¶§Ç²Õ¦XÂoÃè¡C

­º¥ý¡A¦Ò¼{ÂoÃè³B²z¦hºØ®ÄªGªº¹w³]¤è¦¡¡C ³q±`¡A <filter> ¤¤ªº²Ä¤@­Ó°ò¤¸±µ¦¬¡§SourceGraphic¡¨§@¬°¿é¤Jªº¡A§YÂoÃè°ò¤¸¤@¤@À³¥Î¨ìªº¤¸¥ó¡C

¨Ò¦p¡A¦pªG§Ú­Ì©w¸q

  <rect filter=¡¨url(#Fs)¡¨ ¡K />
  
¨º­Ó¯x§Î³Q»{¬°¬OÂoÃè¡§Fs¡¨ªº SourceGraphic¡C ³sÄòªº¨C­Ó°ò¤¸¡]FP1¡BFP2¡B¡KFPk¡^³£±N«e¤@­ÓÂoÃ誺¿é¥X¡§result¡¨·í§@¥¦ªº¿é¤J"in"¡C

<feMerge>

feMerge ÂoÃ褹³\¨Ã¦æ²Õ¦XÂoÃè¡A¦Ó¤£¬O¦ê¦æ²Õ¦X¡]¦p«e­±ªº¥Ü¨Ò¡^¡C feMerge ´£¨Ñ¤F¤@ºØÁ{®É¦sÀx¨C­ÓÂoÃè¿é¥Xªº¤èªk¡C ¤@¥¹³Ð«Ø¤F¦h­Ó¹Ï¼h¨Ã±N¨ä¦sÀx¬°¤£¦P¹Ï¤¸ªºµ²ªG¡A´N¥i¥H±N¥¦­Ì«ö±q¤U¨ì¤Wªº¶¶§Ç©ñ¸m¦bµe¥¬¤W¡C
<rect x="0" y="0" height="100%" width="100%" fill="white"/>
<filter id="offset"  x="-20%" y="-10%" height="130%" width="240%">
  <feGaussianBlur stdDeviation="10"/>
  <feOffset dx="20" dy="15" result="B">
  </feOffset>
  <feMerge>
    <feMergeNode in="B"/>
    <feMergeNode in="SourceGraphic"/>
  </feMerge>
</filter>

<g filter="url(#offset)">
  <image x="25%" y="3%" xlink:href="../svg/p2.jpg"  height="100%" width="100%"/>
</g>

¨ÒÃD:³±¼v°Êµe

<feImage>

´O¤J¹ÏÀÉ¡A´O¤Jªº¹Ï·í±N·|Åã¥Ü¦¨ÂI°}¹Ï(bitmap)¡A§Y¨Ï´O¤JSVG¤]¤@¼Ë¡C
¥¿¦p feFlood ¤¹³\±N±m¦â¯x§Î¤Þ¤JÂoÃè¤@¼Ë¡AfeImage ¤¹³\±N¯x§ÎÂI°}¹Ï¤Þ¤JÂoÃè¡C
<feImage xlink:href="../svg/mdn_logo_only_color.png" />

<feTile>

<feFlood> ¤§©ó <rect>¡A¥¿¦p <feImage> ¤§©ó <image>¡C ¦P¼Ë¡A<feTile> ª½±µÃþ¦ü©ó <pattern>¡C ¥¦¤¹³\§Ú­Ì±N­«½Æªº¹Ï¹³¼Ò¦¡±a¤J¹LÂo¾¹³]³Æ¡A¥H«K§Ú­Ì¥i¥H¨Ï¥Î¥¦¨Ó³Ð«Ø®ÄªG¡C ¥H¤U¬O ªºÂ²³æ¨Ï¥Î¡G
<rect x="0" y="0" height="100%" width="100%" fill="purple"/>
<filter id="T" filterUnits="objectBoundingBox" x="0" y="0"
    height="100%" width="100%" >
  <feImage xlink:href="p2.jpg" result="one"
              x="0" y="15" width="50" height="50"/>
  <feFlood x="45" y="0" width="10" height="70"
        flood-color="cyan" result="two"/>
  <feFlood x="25" y="18" width="50" height="10" flood-color="yellow"
        flood-opacity=".5" result="three" />
  <feMerge>
      <feMergeNode in="one"/>
      <feMergeNode in="two"/>
      <feMergeNode in="three"/>
  </feMerge>
  <feTile/>
</filter>
<rect x="0" y="0" height="80%" width="50%" filter="url(#T)" />

<feColorMatrix>

feColorMatrix °ò¤¸¤¹³\­«·s©w¸q¹Ï¹³¤¤ªºÃC¦â¡A°ò©ó±N¨C­Ó¹³¯Àªº RGB ©M alpha ¯Å§O­¼¥H¼Æ¦r«Y¼Æªº¯à¤O¡C ¦b§ó½ÆÂøªº±¡ªp¤U¡A¥Î¤á¥i¥H«ü©w¤@­Ó¥Ñ 20 ­Ó«Y¼Æ¡]4 x 5¡^²Õ¦¨ªº§¹¾ã¯x°}¡A¥H­¼¥Hªí¥Üµ¹©w¹³¯ÀÃC¦â­Èªº 1 x 4 ¦V¶q¡C
| R' |     | a00 a01 a02 a03 a04 |   | R |
| G' |     | a10 a11 a12 a13 a14 |   | G |
| B' |  =  | a20 a21 a22 a23 a24 | * | B |
| A' |     | a30 a31 a32 a33 a34 |   | A |
| 1  |     |  0   0   0   0   1  |   | 1 |
¦b§ó²³æªº±¡ªp¤U¡A¹w©w¸q¯x°}»P¯S®í¼Ð»x¡]¨Ò¦p¡§saturate¡¨¡B¡§hueRotate¡¨©Î¡§luminanceToAlpha¡¨¡^¬ÛÃöÁp¡C ³o·N¨ýµÛ¥i¥H²³æ¦a«ü©w¼Ð»x¤§¤@¨Ó°õ¦æ«ü¥Üªº¾Þ§@¡C
<svg height="440" width="440" xmlns="http://www.w3.org/2000/svg"
        xmlns:xlink="http://www.w3.org/1999/xlink">
  <defs>
<filter id="F">
 <feColorMatrix type="saturate" values="3" />
</filter>
</defs>
<image x="25%" y="0" width="25%" height="35%" xlink:href="p2.jpg"/>
<image x="50%" y="0" width="25%" height="35%" xlink:href="p2.jpg"
      filter="url(#F)"/>
</svg>
feColorMatrix ¬O¨Ï¥Î¯x°}¨Ó¼vÅTÃC¦âªº¨C­Ó³q¹D(°ò©óRGBA):
<filter>
     <feColorMatrix
      type="matrix"
      values="R 0 0 0 0
              0 G 0 0 0
              0 0 B 0 0
              0 0 0 A 0 "/>
      </feColorMatrix>
</filter>

¨C¤@¦C(row)ªº©M´N¬O¸Ó³q¹Dªº­È¡A³Ì«á¤@­Ó­È¬O¤@­Ó­¼¼Æ¡C

µÛ¦â
¥i¥H¿òº|©Î²V¦XÃC¦â³q¹Dµ¹¹Ï¹³µÛ¦â¡A¹³¤U­±³o¼Ë¡G¬õ¦â©MÂŦâ²V¦¨«~¬õ¦â(magenta)¡C
<filter id="magenta" x="0%" y="0%" width="100%" height="100%">
       <feColorMatrix type="matrix" in="SourceGraphic"
       values=
               "1   0  0  0  0
                0   0  0  0  0
                0   0  1  0  0
                0   0  0  0  0
       "/>
</filter>
<image x="5%" y="0%" xlink:href="../svg/three.jpg" height="50%" width="30%"/>
<image x="5%" y="50%" xlink:href="../svg/three.jpg"
        filter="url(#magenta)" height="50%" width="30%"/>

·í¤@­ÓÃC¦â­È®ø¥¢«á¡A·|¨Ï¥Î¨ä¥L¨â­Ó­È¨ú¦Ó¥N¤§¡C
¤ñ¦p¡A¨S¦³greenÃC¦â³q¹D´N·|¨S¦³white¡Bcyan©Îyellow¡C
¨ä¹ê¥L­Ì¨Ã¨S¦³®ø¥¢¡A¥u¤£¹L¥L­Ìªº«G«×­È¡]©Îalpha¡^©|¥¼Ä²¤Î¡C

ALPHA­È
§Ú­Ì¥i¥H³q¹L alpha¡]²Ä¥|¦æ¡^¨Ó¬ð¥X³±¼v©M«G«×¡C²Ä¥|¦C¨üalpha³q¹D¼vÅT¡A¦Ó²Ä¥|¦æ±N¼vÅT¨C­Ó³q¹Dªº«G«×­È¡A¦p¡G
<filter id="alpha" x="0%" y="0%" with="100%" height="100%">
       <feColorMatrix type="matrix" in="SourceGraphic"
       values=
               "1   0  0  0   0
                0   1  0  0   0
                0   0  1  0   0
                0   0  0  1   0  "/>
</filter>
§j¥X³q¹D
§Ú­Ì¤]¥i¥H³q¹L²Ä¥|¦Cªº­Ó¤H³q¹D¼vÅT¾ã­Óalpha³q¹D¡C
¥Ü¨Ò¤¤¦³¤@­ÓÂŦ⪺¤ÑªÅ¡A¥i¥H±NÂŦ⪺¤ÑªÅÅܦ¨¥Õ¦â¡A¦p¤U¡G
<filter id="elim-blue" x="0%" y="0%" width="100%" height="100%">
       <feColorMatrix type="matrix" in="SourceGraphic"
       values=
               "1   0  0  0  0
                0   1  0  0  0
                0   0  1  0  0
                0   0 -2  1  0
       "/>
</filter>
ÅÜ«G©MÅÜ·t
³q¹L±NRGB­È¨C­Ó³q¹Dªº­È³]¸m¦¨¤p©ó1¡A¥i¥H³Ð«Ø¤@­ÓÅÜ·t®ÄªG¡A¤Ï¤§¡A±N¨C­Ó³q¹D­È³]¸m¦¨¤j©ó1¥i¥H³Ð«Ø¤@­ÓÅÜ«G®ÄªG¡C¤U¹Ï¯à²M´·ªºÄÄ­z³o¤@¤Á¡G
<filter id="lighten">
  <feColorMatrix type="matrix"
    values="1.5  0   0   0   0
             0 1.5   0   0   0
             0   0 1.5   0   0
             0   0   0   1   0 "/>
</filter>
¦Ç«×
³q¹L¦b¤@¦C¤¤¶È±µ¨ü¤@­Ó³±¼vªº¹³¯À­È¡A¥i¥H³Ð«Ø¦Ç«×®ÄªG¡C¨Ò¦p
<filter id="gray">
  <feColorMatrix type="matrix"
    values="1   0   0   0   0
            1   0   0   0   0
            1   0   0   0   0
            0   0   0   1   0 "/>
</filter>

²Ä¤@¦æªº¤T­Ó 1 ²¾¨ì²Ä¤G©Î¤T¦C¡A¤]¦³Ãþ¦ü®ÄªG¡C

ºî¦X
feColorMatrix ªº¯u¥¿¤O¶q¦b©ó¥¦¯à°÷²V¦X³q¹D¨Ã±N³\¦h³o¨Ç·§©À²Õ¦X¦¨·sªº¹Ï¹³®ÄªG¡C
<filter id="peachy">
  <feColorMatrix type="matrix"
    values="1   0   0   0   0
            0  .5   0   0   0
            0   0   0  .5   0
            0   0   0   1   0 "/>
</filter>
¦b¥¿±` Alpha ³q¹D¤W¨Ï¥Î¬õ¦â³q¹D¡A¦b¤@¥b±j«×¤UÀ³¥Îºñ¦â¡A¦b¸û·tªº Alpha ³q¹D¤WÀ³¥ÎÂŦâ¡A¦ý¤£¦b¨ä­ì©lÃC¦â¦ì¸m¡C ³oºØ®ÄªG¦b³±¼v¤¤¬°§Ú­Ì´£¨Ñ¤F²`ÂŦâ¡A¦b°ª¥ú©M¤¤¶¡¦â½Õ¤¤²V¦X¤F¬õ¦â©M¥bºñ¦â¡C ¦pªG§Ú­Ì¦^¾Ð¤@¤U¬õ¦â + ºñ¦â = ¶À¦â¡A¬õ¦â + (ºñ¦â/2) ·|§ó¹³¬À·ä¦â¡C
<filter id="lime">
  <feColorMatrix type="matrix"
    values="1   0   0   0   0
            0   2   0   0   0
            0   0   0  .5   0
            0   0   0   1   0 "/>
</filter>
¦b¸Ó¬q¤¤¡A§Ú­Ì¨Ï¥Î¬õ¦â¡B·¸¥Xªººñ¦â©MÂŦ⪺¥¿±`¹³¯À¦â½Õ¡A¨S¦³¨ä­ì©l¦â½Õ¹³¯À¡A¦ýÀ³¥Î©ó³±¼v¤¤¡C ¦P¼Ë¡A§Ú­Ì¬Ý¨ì³±¼v¤¤ªº²`ÂŦâ¡A ¥Ñ©ó¬õ¦â + ºñ¦â = ¶À¦â¡A¬õ¦â + (ºñ¦â * 2) ¦b°ª¥ú¤¤§ó¹³¬O¶Àºñ¦â¡C

¦b¤U­±ªº¥Ü¨Ò¤¤¡A±N¹Ï¹³±q¼Ð·Ç RGB Âà´«¬°³¡¤À³z©ú¡C¨Ï¥Î¹Ï¹³ªº³Ì·t³¡¤À¡A¥H«K©³¼hÃC¦â³z¥X¡C ¦b³oºØ±¡ªp¤U¡A¨Ï¥Î§@¬°ÂoÃ誺¤@³¡¤À³Ð«Øªº¡§¶À¦â¡¨¡C

<svg xmlns="http://www.w3.org/2000/svg"
	xmlns:xlink="http://www.w3.org/1999/xlink">
<filter id="twoF" x="0%" y="0%" width="100%" height="100%">
       <feFlood  flood-color="yellow" result="A"/>
       <feColorMatrix type="matrix" in="SourceGraphic" result="B"
       values=
               "1   0  0  0  0
                0   1  0  0  0
                0   0  1  0  0
                1   1  1  0  0
       "/>
       <feMerge>
              <feMergeNode in="A"/>
              <feMergeNode in="B"/>
       </feMerge>
</filter>
<image x="5%" y="20%" xlink:href="p2.jpg" filter="url(#twoF)"
    height="50%" width="30%"/>
</svg>

°Ñ¦Ò¸ê®Æ

<feConvolveMatrix>

ÂoÃèfeConvolveMatrix©w¸q¤@­Ó n ¡Ñ n ¯x°}¡]³q±` n ¬°©_¼Æ¡^¡A¨ä¤¤¯x°}ªº¤¤¤ß³æ¤¸¬O«ü¹³¯À¥»¨­¡A¦Ó¯x°}¤¤¥¦ªº¤W¤è¡B¥ª°¼¡B¤U¤è©M¥k°¼ªº³æ¤¸¡A °Ñ¦Ò¨ì¸Ó¹³¯Àªº¤W¤è¡B¥ª°¼¡B¤U¤è©M¥k°¼ªº¹³¯À¡C ¯x°}¤¤ªº¼Æ¦r«Y¼Æ©w¸q¤F¨C­Ó¬Û¾F¹³¯À¦b­pºâ¸Ó¹³¯Àªº·sÃC¦â­È®ÉªºÅv­«¡C ¦b³Ì²³æªº±¡ªp¤U¡A¯x°}
      0 0 0
      0 1 0
      0 0 0
¤£¼vÅT¥ô¦ó¹Ï¹³¡C

<feConvolveMatrix> ÄÝ©Ê

  • <order>
    ©w¸q§Ú­Ì§@¥Îªº¹Ï®æ¦³´X®æ ( ¤]´N¬O¯x°}­n¦h¤j )¡A¹w³]¬O 3 ¡A¤]´N¬O 3x3 ªº¯x°}¡C
  • kernelMatrix <feConvolveMatrix> ¤¤³ÌÃöÁ䪺ÄݩʡA´N¬O¯x°} kernelMatrix ªº­È¡A¦p¤U©Ò¥Ü¡G
    <filter id="edge">
           <feConvolveMatrix order="3"
           kernelMatrix="
                -1  -1  -1
                -1   7  -1
                -1  -1  -1
           " />
    </filter>
    <image id="M4" x="100" xlink:href="../svg/p2.jpg"
        width="150" height="175"
        filter="url(#edge)" />
    
    ¤W­z¤º®e¸Ø¤j¨º¨Ç»P¨ä¬Û¾F¹³¯À«D±`¤£¦Pªº¹³¯À¡A¦]¬°¨C­Ó¹³¯À¬Û¾F¹³¯ÀªºÅv­«¬°­t¡C
  • divisor
    ³o­Ó¼Æ¦r¹w³]­È¬°¯x°}ªºÁ`©M¡C
  • bias
    ³Ì«á¥X¨Óµ²ªGªº°¾²¾¶q¡A¹w³]­È¬° 0¡C
  • targetX¡BtargetY
    ¥Ø¼Ð¹³¯Àªº¤¤¤ß¦ì¸m¡A³Ì¥ªÃä»P³Ì¤W­±¬° 0¡A³Ì¥kÃä©M³Ì¤U­±«h¬O¾ã­Ó¯x°}ªº¤j¤p¡A¹w³]³£¬O¦b¤¤¤ßÂIªº¦ì¸m¡C
  • edgeMode = "duplicate | wrap | none"
    none ´N¬O¤£·|­«½Æ¡Aduplicate ´N¬O¶i¦æÃè¹³¦a­«½Æ¡Awrap ´N¬O¶i¦æ³æ¯Âªº­«½Æ¡C
  • kernelUnitLength
    ¹w³]¥u¦³¤@­Ó¼Æ­È¡A¤]¥i¥H¶ñ¼g¨â­Ó¼Æ­È¡A¤À§O¬O dx ©M dy¡A³o­ÓÄÝ©ÊÅý­ì¥»§@¥Î¥u¦³¤@­Ó¹³¯Àªº¤º®Ö¡A¥i¥H¦ùÁYÂX®i¡C
  • preserveAlpha = "false | true"
    ¹w³]­È¬° false ¡Aªí¥Ü alpha ¦âª©±N¤]·|¤@¨Ö¶i¦æ¯x°}¹Bºâ¡A¦pªG³]¬° true¡A±N¥u·|¥Î©ó RGB ¦âª©¡C

¯B±n¥Ü¨Ò

  <defs>
      <filter id="emboss">
        <feConvolveMatrix  order="3"
            kernelMatrix="
                  -2 -1  0
                  -1  1  1
                   0  1  2"
            edgeMode="none">
        </feConvolveMatrix>
      </filter>
  </defs>

§ó¦h¥Ü¨Ò¤@:´£¨úÃä½t--¯B±n

<filter id="filter1" x="0" y="0" width="100%" height="100%">
    <feConvolveMatrix order="5 5" preserveAlpha="true"
       kernelMatrix="
          -1 0 0 0 0
          0 -2 0 0 0
          0  0 3 0 0
          0  0 0 0 0
          0  0 0 0 0" />
</filter>

§ó¦h¥Ü¨Ò¤G:´£¨úÃä½t--¬õ¦â¯B±n

¨Ï¥Î feConvolveMatrix ³y¦¨¯B±n®ÄªG¡A¦A¥Î feConvolveMatrix ¶È«O¯d¬õ¦â¡C

<filter id="filter1" x="0" y="0" width="100%" height="100%">
    <feConvolveMatrix preserveAlpha="true"
        kernelMatrix="-2 -2 -2
                      -2 16 -2
                      -2 -2 -2" />
    <feColorMatrix type="matrix"
        values="0  1  0  0  0
               0  0  0  0  0
               0  0  0  0  0
               0  0  0  1  0" />
</filter>

§ó¦h¥Ü¨Ò¤T:´£¨úÃä½t--ÂŦâ¯B±n

±N feColorMatrix ´«¦¨¤U¦C¼Æ­È¡A§Y¥i´«¦¨¶È«O¯dÂŦâ¡C

    <feColorMatrix type="matrix"
        values="0  0   0  0  0
                0  .95 0  0  0
                0  1   0  0  0
                0  0   0  1  0" />

°Ñ¦Ò¸ê®Æ

Ãö©óÂoÃè feConvolveMatrix ¸Ô²Ó¸Ñ»¡¡A¨£ filter:feConvolveMatrix
kernelMatrix ªº¼v¹³³B²z, ¸Ô¨£ filter:feConvolveMatrix
§ó¦h¥Ü¨Ò¨£ svg¤¤feConvolveMatrix

<feComponentTransfer>

feComponentTransfer ¥]§t¥|­Ó¤¸¯À¡A¤À§O¬O¡GfeFuncR¡BfeFuncG¡BfeFuncB¡BfeFuncA¡A¤]´N¬O¥i¥H°w¹ï¬õºñÂÅ»P alpha ¦âª©¶i¦æ¿W¥ß½Õ¾ã¡A½Õ¾ãªº type ¤À¬°¤­ºØ¡A¤À§O¬O¡Gidentity¡Btable¡Bdiscrete¡Blinear¡Bgamma¡C
 <defs>
   <filter id="table">
    <feComponentTransfer>
     <feFuncG type="table" tableValues="0.0 0.15 0.4 1.0" />
    </feComponentTransfer>
   </filter>
 </defs>
 <image x="0" y="0" width="300" height="200" xlink:href="three.jpg" />
 <image x="0" y="200" width="300" height="200"
       xlink:href="three.jpg" filter="url(#green)" />

¥k¤W¹Ï¬O­ì¹Ï¡A¥k¤U¹Ï¬O½Õ¾ãÃC¦â«áªº¹Ï¹³¡C

¦¹ table ³]¸m¤F¥|­ÓÃöÃìÂI 0.0 0.15 0.4 1.0 ¡A°Ï¹j¥X¤T­Ó°Ï¶¡¡C¿é¥X©M¿é¤JªºÃö«Y¦p¥Ü:
 ¿é¤J         ¿é¥X
0-0.33	    0.0-0.15
0.33-0.66   0.15-0.4
0.66-1	    0.4 1.0
¿é¤J¤À¦¨¤Tµ¥¤À°Ï¶¡¡A¤À§O¬M¹ï¨ì table ªº¤T­Ó°Ï¶¡¡C

¦â«×¤ÏÂà

<filter id="inverse">
 <feComponentTransfer>
   <feFuncR type="table" tableValues="1 0" />
   <feFuncG type="table" tableValues="1 0" />
   <feFuncB type="table" tableValues="1 0" />
 </feComponentTransfer>
</filter>
¨Ï¥Î type='table' ¤ÏÂà¦â«×½d³ò¡C ±N¥¿±`½d³ò±q 0 ¨ì 1 ¨Ã¬M®g¨ì¤@­Ó·sªº¤À§G¡G0-> 1 ©M 1-> 0¡A¥H¤Î©Ò¦³¤¶©ó¨âªÌ¤§¶¡¡A¹ï©ó¹Ï¹³ªº¤T­Ó³q¹D¤¤ªº¨C¤@­Ó¡C

<feComponentTransfer> -- discrete

¿é¤J¤À¦¨ªºµ¥¤À°Ï¶¡¡A¤À§O¬M¹ï¨ì³æ¤@¼Æ­È¡C¨Ò¦p¤U¨Ò¤¤¡A
feFuncB ³]¦³¨âÂI 0.0 ©M 0.6¡A¿é¤J 0-0.5 ¬M¨ì 0.0¡A0.5-1 ¬M¨ì0.6¡C
<defs>
    <filter id="discrete" filterUnits="userSpaceOnUse"
              x="0" y="200" width="300" height="200">
      <feComponentTransfer>
        <feFuncR type="discrete" tableValues="0.0 1.0 1.0 1.0" />
        <feFuncG type="discrete" tableValues="0.0 0.5 0.5 0.9" />
        <feFuncB type="discrete" tableValues="0.0 0.6" />
      </feComponentTransfer>
    </filter>
</defs>
<image x="0" y="0" width="300" height="200" xlink:href="three.jpg" />
<image x="0" y="200" width="300" height="200"
                xlink:href="three.jpg" filter="url(#discrete)" />

¥k¤W¹Ï¬O­ì¹Ï¡A¥k¤U¹Ï¬O½Õ¾ãÃC¦â«áªº¹Ï¹³¡C

¦AÁ|¤@¨Ò
<filter id="paint" filterUnits="userSpaceOnUse"
      x="0" y="200" width="300" height="250">
    <feComponentTransfer>
        <feFuncR type="discrete" tableValues="0 .5 1 1"/>
        <feFuncG type="discrete" tableValues="0 .5 1"/>
        <feFuncB type="discrete" tableValues="0"/>
     </feComponentTransfer>
</filter>

¦¹¿ï¶µ±N°Ï¶¡ [0,1] ¤¤ªº¬õ¦â­È¬M®g¨ì¥H¤U¤T­Ó­È¤§¤@¡G

(0 ¨ì .25) -> 0; (.25 ¨ì .50) -> .5¡F (.50 ¨ì .75 ©M .75 ¨ì 1.0) -> 1¡C

ºñ¦â³q¹D«e¬q¡B¤¤¬q©M«á¬q¡A¤À§O¬M®g¨ì 0%¡B50% ©Î 100% ºñ¦â¡C
ÂŦâ³q¹D¡]¦b¦¹¯S©w¹Ï¹³¤¤¬Û¹ï·L¤£¨¬¹D¡^³Q§í¨î¬°¶Â¦â¡]§¹¥þ®ø°£¨ä®ÄªG¡^¡C
­ì¹Ï¹³¨S¦³ alpha ³q¹D¡]¨CÂI³£¬O¤£³z©úªº¡^¡A¦]¦¹¤£»Ý­n­×§ï¸Ó³q¹D¡C

<feComponentTransfer> -- linear

½u©ÊÅܤÆ: ¿é¥X = k*¿é¤J + b¡Ak ¬O±×²v(slope)¡Ab ¬OºI¶Z(intercept)¡C
¤U¨Òºñ¦â¿é¥X¬° 0¡C
<defs>
  <filter id="linear" filterUnits="objectBoundingBox"
        x="0%" y="0%" width="100%" height="100%">
    <feComponentTransfer>
      <feFuncR type="linear" slope="1" intercept="0" />
      <feFuncG type="linear" slope="0" intercept="0" />
      <feFuncB type="linear" slope="1" intercept="0" />
      </feComponentTransfer>
   </filter>
</defs>
<image x="0" y="0" width="300" height="200" xlink:href="three.jpg" />
<image x="0" y="200" width="300" height="200"
   xlink:href="three.jpg" filter="url(#Linear)" />

<feComponentTransfer> -- gamma

¦±½uÅܤÆ: »Ý³]©w¤T­Ó°Ñ¼Æamplitude(®¶´T)¡Aexponent(«ü¼Æ) ©M offset(°¾®t)¡C

¿é¥X = amplitude * pow(¿é¤J¡Aexponent) + offset

<defs>
  <filter id="Gamma" filterUnits="objectBoundingBox"
          x="0%" y="0%" width="100%" height="100%">
    <feComponentTransfer>
      <feFuncR type="gamma" amplitude="2" exponent="3" offset="0" />
      <feFuncG type="gamma" amplitude="2" exponent="2" offset="0" />
      <feFuncB type="gamma" amplitude="2" exponent="1" offset="0" />
    </feComponentTransfer>
  </filter>
</defs>
<image x="0" y="0" width="300" height="200" xlink:href="three.jpg" />
<image x="0" y="200" width="300" height="200"
        xlink:href="three.jpg" filter="url(#Gamma)" />

feComponentTransfer °Ñ¦Ò¸ê®Æ

==>svg-filters2

°Ñ¦Ò¸ê®Æ

  1. SVG Filter Play
  2. Filter Effects in SVG
  3. svg filter
  4. SVG §¹¾ã±Ð¾Ç 31 ¤Ñ
  5. ¤@¦¸·dÀ´SVG¤¤©Ò¦³±`¥ÎªºÂoÃè
  6. why-the-svg-filter-is-awesome
  7. The 10 Best SVG Filter Resources & Tutorials
  8. ±j¤jªº SVG ÂoÃè
  9. svg-filter-shadow-css-blur
  10. fediffuselighting
  11. SVG feTurbulenceÂoÃè²`¤J¤¶²Ð
  12. SVG fedisplacementmapÂoÃè²`¤J¤¶²Ð
  13. SVG fedisplacementmapÂoÃè²`¤J¤¶²Ð
  14. w3 SVG 1.1
  15. SVG µ§°O