SVG-ΡΠΈΠ»ΡΡΡΡ. Π§Π°ΡΡΡ 1. ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΏΠΎΠ½ΡΡΠΈΡ ΠΈ ΡΠΈΠΏΡ. ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΡΡΠ΅ΠΊΡΠΎΠ².
SVG-ΡΠΈΠ»ΡΡΡΡ β ΡΡΠΎ Π²ΠΎΠΈΡΡΠΈΠ½Ρ ΠΌΠΎΡΠ½ΡΠΉ, Π½ΠΎ ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΎΡΠ΅Π½Ρ ΡΠ΅Π΄ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ. A Π²ΡΠ΅ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄ΠΎ ΡΠΈΡ ΠΏΠΎΡ ΠΈΡΠΏΡΡΡΠ²Π°ΡΡ ΡΡΡΠ°Ρ ΠΏΠ΅ΡΠ΅Π΄ SVG Π² ΡΠ΅Π»ΠΎΠΌ, Π° ΡΠΆ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΡ ΠΈ ΡΡΡΠ΅ΠΊΡΡ ΠΊΠ°ΠΆΡΡΡΡ ΡΠ΅ΠΌ-ΡΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΈ ΡΡΡΠ΄Π½ΡΠΌ Π΄Π»Ρ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ.
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ Ρ ΠΏΠΎΠΏΡΡΠ°ΡΡΡ ΡΠ±Π΅Π΄ΠΈΡΡ ΠΠ°Ρ Π² ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΌ, ΡΠ°ΡΡΠΊΠ°ΠΆΡ ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ ΠΈ ΡΠΈΠΏΠ°Ρ SVG-ΡΠΈΠ»ΡΡΡΠΎΠ² ΠΈ, Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΠΈΡ ΠΊ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌ Π½Π° Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΠ°Ρ .
SVG-ΡΠΈΠ»ΡΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΠΏΠΎΡΡΠΈ Π²ΡΠ΅ΠΌΠΈ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ Π±ΡΠ°ΡΠ·Π΅ΡΠ°ΠΌΠΈ, Π²ΠΊΠ»ΡΡΠ°Ρ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΠ΅. ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΎΡΡΠ°Π²Π»ΡΡΡ IE9 ΠΈ Android native browser Π²Π΅ΡΡΠΈΠΈ Π½ΠΈΠΆΠ΅ 4.4.
svg-filters ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π±ΡΠ°ΡΠ·Π΅ΡΠ°ΠΌΠΈ
Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ, ΡΡΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΠ· ΡΠ΅Π±Ρ ΡΠΈΠ»ΡΡΡ Π² SVG, Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ. ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° ΠΌΡ Π½Π°ΡΠΈΡΡΠ΅ΠΌ ΠΊΡΡΠ³:
<svg viewbox="0 0 400 300"> <circle cx="200" cy="200" fill="#3498db" r="80" /> </svg>
ΠΡΠ»ΠΈ ΠΡ Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π΅ Π·Π½Π°ΠΊΠΎΠΌΡ Ρ SVG, ΡΠΎ ΡΠ΅ΠΉΡΠ°Ρ ΡΠ°ΠΌΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ π
ΠΠΊΡΠ°ΡΡΠ΅:
- ΡΠ΅Π³
<circle>
- Π°ΡΡΡΠΈΠ±ΡΡΡ
cx
,cy
β Π·Π°Π΄Π°ΡΡ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅Π½ΡΡΠ° ΠΊΡΡΠ³Π°,fill
β Π·Π°Π»ΠΈΠ²ΠΊΡ,r
β ΡΠ°Π΄ΠΈΡΡ.
Π’ΠΎ, ΡΡΠΎ ΠΌΡ Π½Π°ΠΏΠΈΡΠ°Π»ΠΈ, Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅ Π²ΠΎΡ ΡΠ°ΠΊ:
ΠΠ°, ΠΊΡΡΡΠΎ. ΠΠ°ΡΡΠΎΡΡΠΈΠΉ, Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΈ ΡΠΈΠ½ΠΈΠΉ SVG-ΠΊΡΡΠ³. Π ΡΠ΅ΠΏΠ΅ΡΡ Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΎΠΏΠΈΡΠ΅ΠΌ ΠΏΡΠΎΡΡΠ΅ΠΉΡΠΈΠΉ SVG-ΡΠΈΠ»ΡΡΡ, Π·Π°Π΄Π°ΡΡΠΈΠΉ Π³Π°ΡΡΠΎΠ²ΡΠΊΠΎΠ΅ ΡΠ°Π·ΠΌΡΡΠΈΠ΅, ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌ ΡΡΠΎΡ ΡΠΈΠ»ΡΡΡ ΠΊ Π½Π°ΡΠ΅ΠΉ Π½Π΅Π·Π°ΠΌΡΡΠ»ΠΎΠ²Π°ΡΠΎΠΉ ΡΠΈΠ³ΡΡΠ΅.
<svg viewbox="0 0 400 300"> <defs> <filter> <feGaussianBlur stdDeviation="10"/> </filter> </defs> <circle cx="200" cy="150" fill="#3498db" filter="url(#myFilter1)" r="80" /> </svg>
Π‘Π°ΠΌ ΡΠΈΠ»ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ Π² ΡΠ΅ΠΊΡΠΈΠΈ <defs>
Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ΅Π³Π° <filter>
. ΠΠΌΡ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π΄Π°ΡΡ id (ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°). Π£ Π½Π°Ρ ΡΡΠΎ id="myFilter1"
.
ΠΠ½ΡΡΡΠΈ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΡΡ ΡΠΈΠΏΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΠΉ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ. Π Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΡΠΎ <feGaussianBlur>
stdDeviation
ΡΠ΅Π³ΡΠ»ΠΈΡΡΠ΅Ρ ΡΡΠΎΠ²Π΅Π½Ρ ΡΠ°Π·ΠΌΡΡΠΈΡ.ΠΠ°Π±Π΅Π³Π°Ρ Π²ΠΏΠ΅ΡΠ΅Π΄, ΡΠΊΠ°ΠΆΠ΅ΠΌ, ΡΡΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΈΠΏΠΎΠ² ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ Ρ Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ Π°ΡΡΠΈΠ±ΡΡΠΎΠ² Π΄Π»Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ².
ΠΠ°Π»Π΅Π΅ ΠΊ ΡΠΎΠΉ ΡΠ°ΡΡΠΈ SVG, ΠΊΠΎΡΠΎΡΠ°Ρ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π° ΡΠΈΠ»ΡΡΡΠΎΠΌ, Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π°ΡΡΠΈΠ±ΡΡ filter="url(#myFilter1)"
Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ id ΡΠΈΠ»ΡΡΡΠ°.
Π Π²ΠΎΡ ΡΡΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ:
ΠΠ°! ΠΠΎΡ ΠΎΠ½ β Π½Π°Ρ ΠΏΠ΅ΡΠ²ΡΠΉ SVG-ΡΠΈΠ»ΡΡΡ. ΠΠ΅ ΡΠ°ΠΊ ΡΠ»ΠΎΠΆΠ½ΠΎ, ΠΊΠ°ΠΊ ΠΊΠ°Π·Π°Π»ΠΎΡΡ, Π½Π΅ ΠΏΡΠ°Π²Π΄Π° Π»ΠΈ? ΠΠ΄Π΅ΠΌ Π΄Π°Π»ΡΡΠ΅. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌ ΡΠ°ΠΊΠΎΠΉ ΠΆΠ΅ ΡΠΈΠ»ΡΡΡ ΠΊ ΡΠ°ΡΡΡΠΎΠ²ΠΎΠΉ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ΅. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΠΌΠ΅ΡΡΠΈΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊΡΠ°ΡΠΈΠ²ΠΎΠΉ Π΄Π΅Π²ΡΡΠΊΠΈ Π² Π½Π°ΡΡΠ½ΠΈΠΊΠ°Ρ Π²Π½ΡΡΡΡ SVG:
<svg viewbox="0 0 400 300"> <image xlink:href="/blogdemo/img/girl.jpg" /> </svg>
Π ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌ ΠΊ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠΈΠ»ΡΡΡ, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠΉ Π²ΡΡΠ΅:
<svg> <defs> <filter> <feGaussianBlur stddeviation="5" /> </filter> </defs> <image filter="url(#myFilter2)" xlink:href="/blogdemo/img/girl.jpg" /> </svg>
ΠΠΎΠ»ΡΡΠΈΠ»Π°ΡΡ βΡΠ°Π·Π±Π»ΡΡΠ΅Π½Π½Π°Ρβ Π΄Π΅Π²ΡΡΠΊΠ°, ΠΊΠ°ΠΊ ΠΌΡ ΠΈ ΠΎΠΆΠΈΠ΄Π°Π»ΠΈ. Π ΡΡΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π½Π°ΡΠ°Π»ΠΎ. ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ!
ΠΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½ΡΠ΅ SVG-ΡΠΈΠ»ΡΡΡΡ. ΠΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΡΠ΅ΠΊΡΠΎΠ² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ.
ΠΡΠ΅ ΠΎΠ΄Π½ΠΈΠΌ Π½Π΅ΠΎΡΡΠ΅ΠΌΠ»Π΅ΠΌΡΠΌ Π΄ΠΎΡΡΠΎΠΈΠ½ΡΡΠ²ΠΎΠΌ SVG-ΡΠΈΠ»ΡΡΡΠΎΠ² ΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠΈΠΏΠΎΠ² ΡΠΈΠ»ΡΡΡΠΎΠ². Π’.Π΅. ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ, ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ ΠΏΠΎΡΠ»Π΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΠ»ΡΡΡΠ°, ΠΌΠΎΠΆΠ΅Ρ ΡΠ²Π»ΡΡΡΡΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΡΠΈΠ»ΡΡΡΠ° ΠΈ Ρ.Π΄.
Π§ΡΠΎΠ±Ρ Π±ΡΠ»ΠΎ ΠΏΠΎΠ½ΡΡΠ½Π΅Π΅, Π΄Π°Π²Π°ΠΉΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΡΠΈΠΏ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ Π΄Π»Ρ βΡΠ°Π·Π±Π»ΡΡΠ΅Π½Π½ΠΎΠΉβ Π΄Π΅Π²ΡΡΠΊΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΄Π΅Π»Π°Π΅ΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅ΡΠ½ΠΎ-Π±Π΅Π»ΡΠΌ.
<svg viewbox="0 0 400 300"> <defs> <filter> <feGaussianBlur in="SourceGraphic" result="a1" stddeviation="3" /> <feColorMatrix in="a1" type="saturate" values="0"></feColorMatrix> </filter> </defs> <image filter="url(#myFilter3)" xlink:href="/blogdemo/img/girl.jpg" /> </svg>
ΠΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΡΡ ΡΡ Π΅ΠΌΡ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ ΠΊΠ°ΠΊ:
ΠΠ°ΠΊ ΠΡ Π²ΠΈΠ΄ΠΈΡΠ΅, Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΡΠΈΠ»ΡΡΡΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ Π°ΡΡΠΈΠ±ΡΡΡ in
ΠΈ result
. ΠΡΠ»ΠΈ ΠΎΠ½ΠΈ Π½Π΅ ΡΠΊΠ°Π·Π°Π½Ρ, ΡΠΈΠ»ΡΡΡΡ Π±ΡΠ΄ΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΠΈΡ
Π·Π°ΠΏΠΈΡΠΈ.
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ in
Π΄Π»Ρ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΡΠΈΠ»ΡΡΡΠ° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΡΠ΅Π΄ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ SourceGraphic
(Π² Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΠ½ΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΠΎΠΌ <image>
)
Π’ΠΈΠΏΡ SVG-ΡΠΈΠ»ΡΡΡΠΎΠ²
ΠΠ°ΠΊ ΠΌΡ ΡΠΆΠ΅ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΈ, ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ
ΡΠΈΠΏΠΎΠ² ΡΠΈΠ»ΡΡΡΠΎΠ². ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· Π½ΠΈΡ
ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅. ΠΠ»Ρ ΠΏΡΠΎΡΡΠΎΡΡ Π²ΠΎΡΠΏΡΠΈΡΡΠΈΡ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ΄, Π½Π°Ρ
ΠΎΠ΄ΡΡΠΈΠΉΡΡ Π²Π½ΡΡΡΠΈ ΡΠ΅Π³Π° filter
. ΠΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΎΡΡΠ°Π΅ΡΡΡ ΡΠ°ΠΊΠΈΠΌ ΠΆΠ΅, ΠΊΠ°ΠΊ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ
ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ
.
feComponentTransfer
Π€ΠΈΠ»ΡΡΡ <fecomponenttransfer>
ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ Π»ΠΈΠ½Π΅ΠΉΠ½ΡΠ΅, ΡΠ°Π±Π»ΠΈΡΠ½ΡΠ΅, Π΄ΠΈΡΠΊΡΠ΅ΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π°Π΄ ΠΊΠ°Π½Π°Π»Π°ΠΌΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ Π³Π°ΠΌΠΌΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠ°Π½Π°Π»Π°.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅ΡΡ:
<!--1-ΠΉ ΠΏΡΠΈΠΌΠ΅Ρ --> ... <fecomponenttransfer> <feFuncR type="linear" slope="5" intercept="-0.5" /> <feFuncG type="linear" slope="0.2" /> <feFuncB type="linear" slope="0.2" /> <feFuncA type="identity" /> </fecomponenttransfer> ...
ΠΠ΄Π΅ΡΡ feFuncR
, feFuncG
, feFuncB
, feFuncA
β ΠΊΡΠ°ΡΠ½ΡΠΉ, Π·Π΅Π»Π΅Π½ΡΠΉ, ΡΠΈΠ½ΠΈΠΉ ΠΈ ΠΊΠ°Π½Π°Π» ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ. type
β ΡΠΈΠΏ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ, slope
β ΠΌΠ½ΠΎΠΆΠΈΡΠ΅Π»Ρ, intercept
β Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌΠΎΠ΅ (ΠΎΡΠ½ΠΈΠΌΠ°Π΅ΠΌΠΎΠ΅) Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. T.Π΅. <feFuncR type="linear" slope="5" intercept="-0.5" />
Π·Π½Π°ΡΠΈΡ: red = red * 5 - 0.5
ΠΠΎΡ ΡΠ°ΠΊ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΠΌ:
<!--2-ΠΉ ΠΏΡΠΈΠΌΠ΅Ρ --> ... <fecomponenttransfer> <fefunca type="linear" slope="0.5" /> </fecomponenttransfer> ...
A Π²ΠΎΡ ΡΠ°ΠΊ Π²ΡΠ΄Π΅Π»ΠΈΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΈΠ½ΠΈΠΉ ΠΊΠ°Π½Π°Π»:
<!--3-ΠΉ ΠΏΡΠΈΠΌΠ΅Ρ --> ... <fecomponenttransfer> <fefuncr type="linear" slope="0" /> <fefuncg type="linear" slope="0" /> <fefuncb type="linear" slope="1" /> </fecomponenttransfer> ...
ΠΠ»ΠΈ ΠΏΡΠΎΡΡΠΎ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π°ΡΡΠΈΠ±ΡΡΠΎΠ² ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΉ ΡΡΡΠ΅ΠΊΡ.
<!--4-ΠΉ ΠΏΡΠΈΠΌΠ΅Ρ --> ... <fecomponenttransfer> <fefuncr type="linear" slope="10" intercept="-4" /> <fefuncg type="linear" slope="1.5" intercept="1" /> <fefuncb type="linear" slope="2" intercept="-1" /> </fecomponenttransfer> ...
ΠΠΎΡ Π΄Π΅ΠΌΠΎ Π²ΡΠ΅Ρ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ², ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΡ Π²ΡΡΠ΅.
Π€ΠΈΠ»ΡΡΡ <fecomponenttransfer>
ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π»ΠΈΠ½Π΅ΠΉΠ½ΡΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ. Π’ΠΈΠΏ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΉ Π·Π°Π΄Π°Π΅ΡΡΡ Π°ΡΡΠΈΠ±ΡΡΠΎΠΌ type
ΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ identity | table | discrete | linear | gamma
. ΠΠ°Π²Π°ΠΉΡΠ΅ Π±Π΅Π³Π»ΠΎ Π²Π·Π³Π»ΡΠ½Π΅ΠΌ, ΡΡΠΎ ΠΈΠ· ΡΠ΅Π±Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΡΠΈΠΏΠΎΠ².
fecomponenttransfer Ρ
type="table"
fecomponenttransfer
Ρ ΡΠΈΠΏΠΎΠΌ table
ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ ΠΊΠ°Π½Π°Π»Π° Π±ΡΠ΄Π΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° ΠΏΡΡΠ΅ΠΌ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ ΠΈΠ½ΡΠ΅ΡΠΏΠΎΠ»ΡΡΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ, ΡΠΊΠ°Π·Π°Π½Π½ΡΠΌΠΈ Π² Π°ΡΡΠΈΠ±ΡΡΠ΅ tablevalues
. Π Π²ΠΎΡ ΡΠ°ΠΊ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±ΠΈΡΡΡΡ ΡΡΡΠ΅ΠΊΡΠ° βΠ½Π΅Π³Π°ΡΠΈΠ²Π°β, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ°Π±Π»ΠΈΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ:... <fecomponenttransfer> <fefuncr type="table" tablevalues="1 0" /> <fefuncg type="table" tablevalues="1 0" /> <fefuncb type="table" tablevalues="1 0" /> </fecomponenttransfer> ...
fecomponenttransfer Ρ
type="discrete"
ΠΠ»Ρ ΡΠΈΠΏΠ° discrete
ΡΡΠ½ΠΊΡΠΈΡ Π±ΡΠ΄Π΅Ρ ΡΡΡΠΏΠ΅Π½ΡΠ°ΡΠΎΠΉ, Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ, ΡΠΊΠ°Π·Π°Π½Π½ΡΠΌΠΈ Π² Π°ΡΡΠΈΠ±ΡΡΠ΅ tablevalues
. ΠΠΎΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ²:
<!-- 1-ΠΉ ΠΏΡΠΈΠΌΠ΅Ρ --> ... <fecomponenttransfer> <fefuncr type="discrete" tablevalues="1 0" /> <fefuncg type="discrete" tablevalues="0 0" /> <fefuncb type="discrete" tablevalues="0 0" /> </fecomponenttransfer> ... <!--2-ΠΉ ΠΏΡΠΈΠΌΠ΅Ρ --> ... <fecomponenttransfer> <fefuncr type="discrete" tablevalues="1 0" /> <fefuncg type="discrete" tablevalues="0 0" /> <fefuncb type="discrete" tablevalues="0 0" /> </fecomponenttransfer> ... <!-- 3-ΠΉ ΠΏΡΠΈΠΌΠ΅Ρ --> ... <fecomponenttransfer> <fefuncr type="discrete" tablevalues="1 1 1" /> <fefuncg type="discrete" tablevalues="0 0.8 1" /> <fefuncb type="discrete" tablevalues="0 0.5 1" /> </fecomponenttransfer> ... <!-- 4-ΠΉ ΠΏΡΠΈΠΌΠ΅Ρ --> ... <fecomponenttransfer> <fefuncr type="discrete" tablevalues="0 0" /> <fefuncg type="discrete" tablevalues="0.1 0.6" /> <fefuncb type="discrete" tablevalues="0. 3 0.9" /> </fecomponenttransfer> ...
ΠΠΌΠ΅Π΅ΡΡΡ ΡΠ°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π·Π°Π΄Π°Π²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π³Π°ΠΌΠΌΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠ°Π½Π°Π»Π° ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΠΈΠΏΠ° ΡΠΈΠ»ΡΡΡΠ° type="gamma"
ΠΈ Π°ΡΡΠΈΠ±ΡΡΠΎΠ² amplitude
, exponent
ΠΈ offset
Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΠΊΠ°Π½Π°Π»ΠΎΠ².
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, <fefuncg type="gamma" amplitude="1.2" exponent="0.5" offset="0.2" />
Π·Π½Π°ΡΠΈΡ: green = 1.2 * pow(green, 0.5) + 0.2
ΠΠ΅ΠΌΠΎ:
<!-- 1-ΠΉ ΠΏΡΠΈΠΌΠ΅Ρ --> ... <fecomponenttransfer> <fefuncr type="gamma" amplitude="1.1" exponent="1" offset="0" /> <fefuncg type="gamma" amplitude="1.1" exponent="1" offset="0" /> <fefuncB type="gamma" amplitude="1.3" exponent="0.9" offset="0.5" /> </fecomponenttransfer> ... <!-- 2-ΠΉ ΠΏΡΠΈΠΌΠ΅Ρ --> ... <fecomponenttransfer> <fefuncr type="gamma" amplitude="2" exponent="1" offset="0.1" /> <fefuncg type="gamma" amplitude="1" exponent="1.2" offset="0.1" /> <fefuncB type="gamma" amplitude="1. 4" exponent="1" offset="0.1" /> </fecomponenttransfer> ... <!-- 3-ΠΉ ΠΏΡΠΈΠΌΠ΅Ρ --> ... <fecomponenttransfer> <fefuncr type="gamma" amplitude="0.1" exponent="1" offset="0.1" /> <fefuncg type="gamma" amplitude="1" exponent="3" offset="0.1" /> <fefuncB type="gamma" amplitude="0.1" exponent="1" offset="0.1" /> </fecomponenttransfer> ... <!-- 4-ΠΉ ΠΏΡΠΈΠΌΠ΅Ρ --> ... <fecomponenttransfer> <fefuncr type="gamma" amplitude="0.4" exponent="1" offset="0.4" /> <fefuncg type="gamma" amplitude="1" exponent="0.33" offset="0.33" /> <fefuncB type="gamma" amplitude="0.1" exponent="1" offset="0.1" /> </fecomponenttransfer> ...
feColorMatrix
Π€ΠΈΠ»ΡΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΌΠ½ΠΎΠΆΠΈΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΠΈΠΊΡΠ΅Π»Ρ ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² Π²ΠΈΠ΄Π΅ Π²Π΅ΠΊΡΠΎΡΠ°, ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠ°Π½Π°Π»Π°ΠΌΠΈ R
, G
, B
,
ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠ³ΠΎ Π΄ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΠΈ 5, Π½Π° ΠΌΠ°ΡΡΠΈΡΡ 5Γ5. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ Π²Π΅ΠΊΡΠΎΡ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΠΉ ΠΈΠ· ΡΠ΅Π±Ρ ΠΊΠ°Π½Π°Π»Ρ R'
, G'
, B'
, A'
ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΈΠΊΡΠ΅Π»Ρ ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠ΅Π³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ.
| 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 |
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΡΠ°Π·Ρ ΠΏΠ΅ΡΠ΅ΠΉΠ΄Π΅ΠΌ ΠΊ ΠΏΡΠΈΠΌΠ΅ΡΡ. ΠΠ½Π°ΠΊΠΎΠΌΡΠΉ Π²ΡΠ΅ΠΌ ΡΡΡΠ΅ΠΊΡ βΡΠ΅ΠΏΠΈΡβ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π²ΠΎΡ ΡΠ°ΠΊΠΎΠΉ ΠΌΠ°ΡΡΠΈΡΡ:
0.343 0.669 0.119 0 0 0.249 0.626 0.130 0 0 0.172 0.334 0.111 0 0 0 0 0 1 0 0 0 0 0 1
ΠΠ°ΡΡΠΈΡΠ° Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π² Π°ΡΡΠΈΠ±ΡΡ values
ΡΠΈΠ»ΡΡΡΠ° <fecolormatrix>
Ρ ΡΠΈΠΏΠΎΠΌ matrix
Π² Π²ΠΈΠ΄Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, ΡΠ°Π·Π΄Π΅Π»Π΅Π½Π½ΡΡ
ΠΏΡΠΎΠ±Π΅Π»ΠΎΠΌ.
ΠΠΎΡΠ»Π΅Π΄Π½ΡΡ ΡΡΡΠΎΠΊΡ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ, Ρ.ΠΊ. ΠΎΠ½Π° Π²ΡΠ΅Π³Π΄Π° ΡΠ°Π²Π½Π° | 0 0 0 0 1 |
.
<fecolormatrix type="matrix" values="0.343 0.669 0.119 0 0 0.249 0.626 0.130 0 0 0.172 0.334 0.111 0 0 0 0 0 1 0" />
ΠΠ»Ρ ΡΠ΄ΠΎΠ±ΡΡΠ²Π° ΡΡΠ΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°ΡΡ Π² ΡΠ°ΠΊΠΎΠΌ Π²ΠΈΠ΄Π΅:
<!-- 1-ΠΉ ΠΏΡΠΈΠΌΠ΅Ρ --> ... <fecolormatrix type="matrix" values="0. 343 0.669 0.119 0 0 0.249 0.626 0.130 0 0 0.172 0.334 0.111 0 0 0 0 0 1 0" /> ...
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π΅ΡΠ΅ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΠΌΠ°ΡΡΠΈΡΠ°ΠΌΠΈ:
<!-- 2-ΠΉ ΠΏΡΠΈΠΌΠ΅Ρ --> ... <fecolormatrix type="matrix" values="0.788 -0.262 0.474 0 0 0.1 1.032 -0.132 -0.1 0 -1 2.1 0.912 -2.8 0 0 0 0 1 0" /> ... <!-- 3-ΠΉ ΠΏΡΠΈΠΌΠ΅Ρ --> ... <fecolormatrix in="SourceGraphic" type="matrix" values="5 0 0 0 -0.2 0 1.2 0 0 -0.2 0 5 1.2 0 -0.2 5 0 0 1 0 "/> ... <!-- 4-ΠΉ ΠΏΡΠΈΠΌΠ΅Ρ --> ... <fecolormatrix type="matrix" values="1.2 0 0 0 -0.2 2 0 2 2 -0.2 2 2 1.2 0 -0.2 2 0 0 1 0"/> ...
ΠΠΎΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ:
Π§Π°ΡΡΠ½ΡΠ΅ ΡΠ»ΡΡΠ°ΠΈ ΡΠ²Π΅ΡΠΎΠ²ΡΡ
ΠΌΠ°ΡΡΠΈΡ β ΡΡΠΎ ΠΏΠΎΠ²ΠΎΡΠΎΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠ²Π΅ΡΠΎΠ²ΠΎΠΌΡ ΠΊΡΡΠ³Ρ, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ²Π΅ΡΠ½ΠΎΡΡΠΈ ΠΈ Ρ. ΠΏ. Π§ΡΠΎΠ±Ρ ΡΠΏΡΠΎΡΡΠΈΡΡ ΠΆΠΈΠ·Π½Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΠΈ Π½Π΅ ΡΡΠ΅Π±ΠΎΠ²Π°ΡΡ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° ΠΌΠ°ΡΡΠΈΡΡ Π΄Π»Ρ ΡΠΈΠΏΠΎΠ²ΡΡ
ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π² ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π΄Π»Ρ ΡΠΈΠ»ΡΡΡΠΎΠ² , ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠΈΠΏΡ type=saturate
, type=hueRotate
, type=luminanceToAlpha
. ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΈΡ
ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ:
ΠΠ±Π΅ΡΡΠ²Π΅ΡΠΈΠ²Π°Π½ΠΈΠ΅ Ρ type="saturate"
, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ, Π³Π΄Π΅ ΡΠ²Π΅ΡΠ½ΠΎΡΡΡ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½Π° Π² 0, 0.5, 2, 5 ΡΠ°Π·, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ type="saturate"
:
<fecolormatrix type="saturate" values="0" /> <!-- 1-ΠΉ ΠΏΡΠΈΠΌΠ΅Ρ --> ... <fecolormatrix type="saturate" values="0.5" /> <!-- 2-ΠΉ ΠΏΡΠΈΠΌΠ΅Ρ --> ... <fecolormatrix type="saturate" values="2" /> <!-- 3-ΠΉ ΠΏΡΠΈΠΌΠ΅Ρ --> ... <fecolormatrix type="saturate" values="5" /> <!-- 4-ΠΉ ΠΏΡΠΈΠΌΠ΅Ρ -->
ΠΠΎΠ²ΠΎΡΠΎΡ ΠΏΠΎ ΡΠ²Π΅ΡΠΎΠ²ΠΎΠΌΡ ΠΊΡΡΠ³Ρ Π½Π° 40, 120, 240, 320 Π³ΡΠ°Π΄ΡΡΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ type="hueRotate"
:
<fecolormatrix type="hueRotate" values="40" /> <!-- 1-ΠΉ ΠΏΡΠΈΠΌΠ΅Ρ --> ... <fecolormatrix type="hueRotate" values="120" /> <!-- 2-ΠΉ ΠΏΡΠΈΠΌΠ΅Ρ --> . .. <fecolormatrix type="hueRotate" values="240" /> <!-- 3-ΠΉ ΠΏΡΠΈΠΌΠ΅Ρ --> ... <fecolormatrix type="hueRotate" values="360" /> <!-- 4-ΠΉ ΠΏΡΠΈΠΌΠ΅Ρ -->
Π‘Π²Π΅ΡΡΠΊΠ°
feConvolveMatrix
Π ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠ²Π΅ΡΡΠΊΠΈ ΠΌΠ°ΡΡΠΈΡΠ° ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΠΎΠ² Β«ΡΠΌΠ½ΠΎΠΆΠ°Π΅ΡΡΡΒ» Π½Π° Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠ°Π½Π°Π»ΠΎΠ² ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ. ΠΡΠ΄Π΅Ρ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ ΡΡΠΎ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ:
ΠΠ΅ΠΉΡΡΠ²ΠΈΠ΅ Π½Π°Π΄ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ (ΠΈΠ»ΠΈ ΡΠΈΠ»ΡΡΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ) ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΌΠ°ΡΡΠΈΡΠ΅ΠΉ ΡΠ²Π΅ΡΡΠΊΠΈ m
. ΠΠ°ΡΡΠΈΡΠ° ΡΠ²Π΅ΡΡΠΊΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠΎ, ΠΊΠ°ΠΊ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΠΏΠΈΠΊΡΠ΅Π»Ρ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠΎΡΠ΅Π΄Π½ΠΈΡ
ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠ²Π΅ΡΡΠΊΠΈ. ΠΠΈΠΊΡΠ΅Π»Ρ Ρ
Π² ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠ΅ΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ x0 β¦ x8 ΠΈΡΡ
ΠΎΠ΄Ρ ΠΈΠ· ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΠΎΡΠΌΡΠ»Ρ:
y = x0Γm0 + x1Γm1 + ... + x8Γm8
Π‘Π²Π΅ΡΡΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΡΠΈΡΡΠΎΠ²ΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π΄Π»Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠ΅Π»Π΅ΠΉ. ΠΡΠΎ ΡΠ°Π·ΠΌΡΡΠΈΠ΅, ΠΈΡΠΊΡΡΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠ΅Π·ΠΊΠΎΡΡΠΈ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠ΅ ΡΡΡΠ΅ΠΊΡΡ.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Β«ΠΏΠΎΠ΄ΡΡΠ½ΡΡΡΒ» ΡΠ΅Π·ΠΊΠΎΡΡΡ ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π½Π΅ΡΠ΅ΡΠΊΠΎΠ³ΠΎ #duckface ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Π²ΠΎΡ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠΈΠ»ΡΡΡΠ° ΡΠ²Π΅ΡΡΠΊΠΈ Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΡΡ 3:
. .. <feConvolveMatrix order="3" kernelMatrix=" 1 -1 1 -1 -1 -1 1 -1 1"> </feConvolveMatrix> ...
ΠΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ (ΡΠ»Π΅Π²Π°) ΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ (ΡΠΏΡΠ°Π²Π°)
ΠΠ°Π»Π΅Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ Π΅ΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² Π΄Π»Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠΈΠ»ΡΡΡΠΎΠ² ΡΠ²Π΅ΡΡΠΊΠΈ:
<!-- 1-ΠΉ ΠΏΡΠΈΠΌΠ΅Ρ --> ... <feConvolveMatrix order="3" kernelMatrix="1 -1 1 -1 -0.1 -1 1 -1 1"></feConvolveMatrix> ... <!-- 2-ΠΉ ΠΏΡΠΈΠΌΠ΅Ρ --> ... <feConvolveMatrix order="3" kernelMatrix="9 0 0 0 1 0 0 0 -9"></feConvolveMatrix> ... <!-- 3-ΠΉ ΠΏΡΠΈΠΌΠ΅Ρ --> ... <feConvolveMatrix order="3" kernelMatrix="-1 -1 -1 -1 7 -1 -1 -1 -1"></feConvolveMatrix> ... <!-- 4-ΠΉ ΠΏΡΠΈΠΌΠ΅Ρ --> ... <feConvolveMatrix order="5" kernelMatrix="1 1 1 1 1 1 -2 -2 -2 1 1 -2 .01 -2 1 1 -2 -2 -2 1 1 1 1 1 1"></feConvolveMatrix> ...
ΠΠΎΠΌΠΏΠΎΠ·ΠΈΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ c
feComposite
ΠΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ feComposite
ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΈ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π°Π΄ ΡΠ»ΠΎΡΠΌΠΈ Π² svg.
<feComposite in="source1" in2="source2" operator="xor"/>
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ :
over
in
out
atop
xor
arithmetic
k1=β0β³ k2=β1β³ k3=β-1β³ k4=β1β³
arithmetic
k1=β.5β³ k2=β.5β³ k3=β.5β³ k4=β.5β³
arithmetic
k1=β0β³ k2=β1β³ k3=β1β³ k4=β0β³
Π Π΅ΠΆΠΈΠΌΡ ΡΠΌΠ΅ΡΠΈΠ²Π°Π½ΠΈΡ ΡΠ»ΠΎΠ΅Π² Ρ
feBlend
ΠΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ feBlend
ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡ ΡΠΌΠ΅ΡΠΈΠ²Π°Π½ΠΈΠ΅ ΡΠ»ΠΎΠ΅Π² Π² svg.
<feBlend in="source1" in2="source2" mode="lighten"/>
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ . ΠΡ Π½Π΅ ΡΠ°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π² photoshop ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ°Ρ , Π½ΠΎ Π²ΡΠ΅ ΠΆΠ΅ Π΅ΡΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅:
normal
screen
multiply
lighten
darken
Π’Π΅ΠΊΡΡΡΡΠ° (ΠΏΠΎΠ²ΡΠΎΡΡΡΡΠ΅Π΅ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅) Ρ
feTile
feTile
ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ΄Π΅Π»Π°ΡΡ Π² svg ΡΠ΅ΠΊΡΡΡΡΡ. ΠΡΠΎ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΡ
ΠΎΠΆΠ΅ Π½Π° background-repeat: repeat;
Π² html
<feTile in="source" />
ΠΠ΅ΠΌΠΎ c svg-ΡΠΈΠ»ΡΡΡΠ°ΠΌΠΈ:
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π΄Π΅ΠΌΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅, ΡΡΠΎ ΠΌΡ Π΄Π΅Π»Π°Π»ΠΈ Π½Π° halloween
ΠΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² Π±ΡΠ΄ΡΡ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Ρ Π² Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌΠΈ ΡΡΠ°ΡΡΡΠΌΠΈ.
Π Π·Π°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅:
ΠΡΠΎ ΠΏΠ΅ΡΠ²Π°Ρ ΡΡΠ°ΡΡΡ Ρ ΠΎΡΠ½ΠΎΠ²Π°ΠΌΠΈ SVG ΡΠΈΠ»ΡΡΡΠΎΠ². ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅Π΄ΡΠ΅Ρβ¦
ΠΠΎΠ΄ΠΏΠΈΡΡΠ²Π°ΠΉΡΠ΅ΡΡ Π½Π° Π½Π°ΡΠΈ Π³ΡΡΠΏΠΏΡ Π² ΠΠ°ΡΠΈΡ Π»ΡΠ±ΠΈΠΌΡΡ ΡΠΎΡ. ΡΠ΅ΡΡΡ .
Posted on ΠΠΊΡΡΠ±ΡΡ 31, 2014
by Nedudi ΠΡΠ΄ΠΈΠ½ ΠΠΌΠΈΡΡΠΈΠΉ
11 Comments β
37,634 views
SVG ΡΠΈΠ»ΡΡΡΡ
SVG ΡΠΈΠ»ΡΡΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΡΠ΅ΠΊΡΡ SVG Π³ΡΠ°ΡΠΈΠΊΠ΅.
<defs> ΠΈ <filter>
ΠΡΠ΅ SVG ΡΠΈΠ»ΡΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΡΡ Π²Π½ΡΡΡΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° <defs>. ΠΠ»Π΅ΠΌΠ΅Π½Ρ <defs> ΡΡΠΎ ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΎΡ Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° «definitions» (ΠΏΠ΅Ρ. «ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ») ΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² (ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΡΠΈΠ»ΡΡΡΡ).
ΠΠ»Π΅ΠΌΠ΅Π½Ρ <filter> ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ SVG ΡΠΈΠ»ΡΡΡΠ°. Π£ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° <filter> Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π·Π°Π΄Π°Π½ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ Π°ΡΡΠΈΠ±ΡΡ id, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΡΠ΅Ρ ΡΠΈΠ»ΡΡΡ. ΠΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π·Π°ΡΠ΅ΠΌ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΡΡΠΎΡ ΡΠΈΠ»ΡΡΡ.
ΠΠ»Π΅ΠΌΠ΅Π½ΡΡ SVG ΡΠΈΠ»ΡΡΡΠΎΠ²
Π SVG Π΄ΠΎΡΡΡΠΏΠ½Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠΈΠ»ΡΡΡΠΎΠ²:
- <feBlend> — ΡΠΈΠ»ΡΡΡ Π΄Π»Ρ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ
- <feColorMatrix> — ΡΠΈΠ»ΡΡΡ Π΄Π»Ρ ΡΡΠ°Π½ΡΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΡΠ²Π΅ΡΠΎΠ²
- <feComponentTransfer>
- <feComposite>
- <feConvolveMatrix>
- <feDiffuseLighting>
- <feDisplacementMap>
- <feFlood>
- <feGaussianBlur>
- <feImage>
- <feMerge>
- <feMorphology>
- <feOffset> — ΡΠΈΠ»ΡΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ΅Π½Π΅ΠΉ
- <feSpecularLighting>
- <feTile>
- <feTurbulence>
- <feDistantLight> — ΡΠΈΠ»ΡΡΡ Π΄Π»Ρ ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈΡ
- <fePointLight> — ΡΠΈΠ»ΡΡΡ Π΄Π»Ρ ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈΡ
- <feSpotLight> — ΡΠΈΠ»ΡΡΡ Π΄Π»Ρ ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈΡ
Π‘ Π»ΡΠ±ΡΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ SVG ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π»ΡΠ±ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΈΠ»ΡΡΡΠΎΠ²!
Π Π΄Π°Π½Π½ΠΎΠΉ Π³Π»Π°Π²Π΅ Π£ΡΠ΅Π±Π½ΠΈΠΊΠ° ΠΏΠΎ SVG Π³ΡΠ°ΡΠΈΠΊΠ΅ ΠΌΡ Π²ΡΠ΅Π³ΠΎ Π»ΠΈΡΡ ΠΏΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅ΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ SVG ΡΠΈΠ»ΡΡΡΠΎΠ², ΡΡΠΎΠ±Ρ Π²Ρ ΡΠΌΠΎΠ³Π»ΠΈ ΡΠ΅Π±Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ SVG Π³ΡΠ°ΡΠΈΠΊΠΈ.
ΠΡΡΠ΅ΠΊΡ ΡΠ°Π·ΠΌΡΡΠΈΡ
Π€ΠΈΠ»ΡΡΡ <feGaussianBlur>.
ΠΡΠΈΠΌΠ΅Ρ
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΠ»Π΅ΠΌΠ΅Π½Ρ <feGaussianBlur>, ΡΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΡΡΡΠ΅ΠΊΡ ΡΠ°Π·ΠΌΡΡΠΈΡ:
ΠΠ°Ρ Π±ΡΠ°ΡΠ·Π΅Ρ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ HTML ΡΠ΅Π³ SVG.SVG ΠΊΠΎΠ΄:
<svg> <defs> <filter x="0" y="0"> <feGaussianBlur in="SourceGraphic" stdDeviation="15" /> </filter> </defs> <rect stroke="green" stroke-width="3" fill="yellow" filter="url(#f0)" /> </svg>
ΠΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅:
- ΠΡΡΠΈΠ±ΡΡ id ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° <filter> ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΠ΅ ΠΈΠΌΡ ΡΠΈΠ»ΡΡΡΠ°
- ΠΡΡΠ΅ΠΊΡ ΡΠ°Π·ΠΌΡΡΠΈΡ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° <feGaussianBlur>
- Π§Π°ΡΡΡ in=»SourceGraphic» ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, ΡΡΠΎ ΡΡΡΠ΅ΠΊΡ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Π΄Π»Ρ Π²ΡΠ΅Π³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°
- ΠΡΡΠΈΠ±ΡΡ stdDeviation ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ°Π·ΠΌΡΡΠΈΡ
- ΠΡΡΠΈΠ±ΡΡ filter ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° <rect> ΡΠ²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΡΡΠ»ΠΊΠΎΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Ρ ΡΠΈΠ»ΡΡΡΠΎΠΌ «f1»
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ΅Π½ΠΈ (<feOffset>)
ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΡΡΠ΅ΠΊΡΠ° ΡΠ΅Π½ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ <feOffset>. ΠΠ΄Π΅Ρ ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π±Π΅ΡΠ΅ΡΡΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ SVG (ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ) ΠΈ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΄Π²ΠΈΠ³Π°Π΅ΡΡΡ Π² XY ΠΏΠ»ΠΎΡΠΊΠΎΡΡΡΡ .
ΠΡΠΈΠΌΠ΅Ρ
Π‘Π½Π°ΡΠ°Π»Π° ΡΠ΄Π²ΠΈΠ³Π°Π΅ΡΡΡ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ (ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° <feOffset>), Π° Π·Π°ΡΠ΅ΠΌ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΠΉ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°Π΅ΡΡΡ Π½Π° ΡΠ΄Π²ΠΈΠ½ΡΡΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ (ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° <feBlend>):
ΠΠ°Ρ Π±ΡΠ°ΡΠ·Π΅Ρ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ HTML ΡΠ΅Π³ SVG.SVG ΠΊΠΎΠ΄:
<svg> <defs> <filter x="0" y="0"> <feOffset result="offOut" in="SourceGraphic" dx="20" dy="20" /> <feBlend in="SourceGraphic" in2="offOut" mode="normal" /> </filter> </defs> <rect stroke="green" stroke-width="3" fill="yellow" filter="url(#f1)" /> </svg>
ΠΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅:
- ΠΡΡΠΈΠ±ΡΡ id ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° <filter> ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΠ΅ ΠΈΠΌΡ ΡΠΈΠ»ΡΡΡΠ°
- ΠΡΡΠΈΠ±ΡΡ filter ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° <rect> ΡΠ²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΡΡΠ»ΠΊΠΎΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Ρ ΡΠΈΠ»ΡΡΡΠΎΠΌ «f1»
Π’Π΅ΠΏΠ΅ΡΡ ΡΠ΄Π²ΠΈΠ½ΡΡΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π΄Π΅Π»Π°Π΅ΠΌ ΡΠ°Π·ΠΌΡΡΡΠΌ (ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° <feGaussianBlur>):
ΠΠ°Ρ Π±ΡΠ°ΡΠ·Π΅Ρ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ HTML ΡΠ΅Π³ SVG.SVG ΠΊΠΎΠ΄:
<svg> <defs> <filter x="0" y="0"> <feOffset result="offOut" in="SourceGraphic" dx="20" dy="20" /> <feGaussianBlur result="blurOut" in="offOut" stdDeviation="10" /> <feBlend in="SourceGraphic" in2="blurOut" mode="normal" /> </filter> </defs> <rect stroke="green" stroke-width="3" fill="yellow" filter="url(#f2)" /> </svg>
ΠΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅:
- ΠΡΡΠΈΠ±ΡΡ stdDeviation ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° <feGaussianBlur> ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ°Π·ΠΌΡΡΠΈΡ
Π’Π΅ΠΏΠ΅ΡΡ Π΄Π΅Π»Π°Π΅ΠΌ ΡΠ΅Π½Ρ ΡΠ΅ΡΠ½ΠΎΠΉ:
ΠΠ°Ρ Π±ΡΠ°ΡΠ·Π΅Ρ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ HTML ΡΠ΅Π³ SVG.SVG ΠΊΠΎΠ΄:
<svg> <defs> <filter x="0" y="0"> <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> <rect stroke="green" stroke-width="3" fill="yellow" filter="url(#f3)" /> </svg>
ΠΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅:
- ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ Π°ΡΡΠΈΠ±ΡΡΠ° in ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° <feOffset> ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ Π½Π° «SourceAlpha», ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π°Π»ΡΡΠ°-ΠΊΠ°Π½Π°Π» Π²ΠΌΠ΅ΡΡΠΎ Π²ΡΠ΅Π³ΠΎ RGBA Π½Π°Π±ΠΎΡΠ° ΠΏΠΈΠΊΡΠ΅Π»Ρ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ°Π·ΠΌΡΡΠΈΡ
Π’Π΅ΠΏΠ΅ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π΅ΠΌ ΡΠ΅Π½Ρ ΠΊΠ°ΠΊ ΡΠ²Π΅Ρ:
ΠΠ°Ρ Π±ΡΠ°ΡΠ·Π΅Ρ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ HTML ΡΠ΅Π³ SVG.SVG ΠΊΠΎΠ΄:
<svg> <defs> <filter x="0" y="0"> <feOffset result="offOut" in="SourceGraphic" dx="20" dy="20" /> <feColorMatrix result="matrixOut" in="offOut" type="matrix" values="0.2 0 0 0 0 0 0.2 0 0 0 0 0 0.2 0 0 0 0 0 1 0" /> <feGaussianBlur result="blurOut" in="matrixOut" stdDeviation="10" /> <feBlend in="SourceGraphic" in2="blurOut" mode="normal" /> </filter> </defs> <rect stroke="green" stroke-width="3" fill="yellow" filter="url(#f4)" /> </svg>
ΠΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅:
- Π€ΠΈΠ»ΡΡΡ <feColorMatrix> ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΡΠ°Π½ΡΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΡΠ²Π΅ΡΠΎΠ² ΡΠ΄Π²ΠΈΠ½ΡΡΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² ΡΡΠΎΡΠΎΠ½Ρ ΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ²Π΅ΡΠ°. Π’ΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ‘0.2’ Π² ΠΌΠ°ΡΡΠΈΡΠ΅ ΡΠΌΠ½ΠΎΠΆΠ°ΡΡΡΡ Π½Π° Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊΡΠ°ΡΠ½ΠΎΠ³ΠΎ, Π·Π΅Π»Π΅Π½ΠΎΠ³ΠΎ ΠΈ ΡΠΈΠ½Π΅Π³ΠΎ ΠΊΠ°Π½Π°Π»ΠΎΠ². Π£ΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΠ΄Π²ΠΈΠ³Π°Π΅Ρ ΡΠ²Π΅Ρ Π² ΡΡΠΎΡΠΎΠ½Ρ ΡΠ΅ΡΠ½ΠΎΠ³ΠΎ (Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ²Π΅ΡΠ° = 0)
— SVG: ΠΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠ°Ρ Π²Π΅ΠΊΡΠΎΡΠ½Π°Ρ Π³ΡΠ°ΡΠΈΠΊΠ°
ΠΠ»Π΅ΠΌΠ΅Π½Ρ SVG
ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΡΡΡΠ΅ΠΊΡ ΡΠΈΠ»ΡΡΡΠ° ΠΏΡΡΠ΅ΠΌ Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠΈ Π°ΡΠΎΠΌΠ°ΡΠ½ΡΡ
ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΎΠ² ΡΠΈΠ»ΡΡΡΠ°. ΠΠ½ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ ΡΠ°ΠΌ ΠΏΠΎ ΡΠ΅Π±Π΅, Π½ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π°ΡΡΠΈΠ±ΡΡΠΎΠΌ filter
Π΄Π»Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² SVG ΠΈΠ»ΠΈ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎΠΌ CSS filter
Π΄Π»Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² SVG/HTML.
ΠΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ | ΠΠ΅Ρ |
---|---|
Π Π°Π·ΡΠ΅ΡΠ΅Π½Π½ΡΠΉ ΠΊΠΎΠ½ΡΠ΅Π½Ρ | ΠΡΠ±ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² Π»ΡΠ±ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅: ΠΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΠ»Π΅ΠΌΠ΅Π½ΡΡ-ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Ρ ΡΠΈΠ»ΡΡΡΠ° , |
ΠΠ»ΠΎΠ±Π°Π»ΡΠ½ΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΡ
- ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΡ
- ΠΡΡΠΈΠ±ΡΡΡ ΠΏΡΠ΅Π·Π΅Π½ΡΠ°ΡΠΈΠΈ
- ΠΡΡΠΈΠ±ΡΡΡ XLink
-
ΠΊΠ»Π°ΡΡ
-
ΡΡΠΈΠ»Ρ
Π‘ΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΡ
-
x
-
Π³
-
ΡΠΈΡΠΈΠ½Π°
-
Π²ΡΡΠΎΡΠ°
-
ΡΠΈΠ»ΡΡΡ Π Π΅Π·
Π£ΡΡΠ°ΡΠ΅Π²ΡΠΈΠΉ -
ΡΠΈΠ»ΡΡΡΡ
-
ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΠ΅ Π΅Π΄ΠΈΠ½ΠΈΡΡ
-
ΡΡΡΠ»ΠΊΠ°: href
ΠΡΠΎΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ SVGFilterElement
.
SVG
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ
Π‘ΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ |
---|
ΠΠΎΠ΄ΡΠ»Ρ ΡΡΡΠ΅ΠΊΡΠΎΠ² ΡΠΈΠ»ΡΡΡΠ°, ΡΡΠΎΠ²Π΅Π½Ρ 1 # ΠΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠΈΠ»ΡΡΡΠ° |
Π’Π°Π±Π»ΠΈΡΡ BCD Π·Π°Π³ΡΡΠΆΠ°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅ Ρ Π²ΠΊΠ»ΡΡΠ΅Π½Π½ΡΠΌ JavaScript. ΠΠΊΠ»ΡΡΠΈΡΠ΅ JavaScript Π΄Π»Ρ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° Π΄Π°Π½Π½ΡΡ .
-
-
-
-
-
-
-
-
-
-
-
-
-
<ΡΠ΅ΠΌΠΎΡΡΠΎΠ»ΠΎΠ³ΠΈΡ>
-
-
-
-
- Π£ΡΠ΅Π±Π½ΠΎΠ΅ ΠΏΠΎΡΠΎΠ±ΠΈΠ΅ ΠΏΠΎ SVG: ΡΡΡΠ΅ΠΊΡΡ ΡΠΈΠ»ΡΡΡΠ°
ΠΠ±Π½Π°ΡΡΠΆΠΈΠ»ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅ΠΌ ΡΡΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΡ?
- Π Π΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡΠ°Π½ΠΈΡΡ Π½Π° GitHub.
- Π‘ΠΎΠΎΠ±ΡΠΈΡΡ ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ΅ Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΡΠΌ.
- ΠΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ Π½Π° GitHub.
ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΠ°Π· ΡΡΠ° ΡΡΡΠ°Π½ΠΈΡΠ° ΠΈΠ·ΠΌΠ΅Π½ΡΠ»Π°ΡΡ ΠΎΡ ΡΡΠ°ΡΡΠ½ΠΈΠΊΠΎΠ² MDN.
— SVG: ΠΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠ°Ρ Π²Π΅ΠΊΡΠΎΡΠ½Π°Ρ Π³ΡΠ°ΡΠΈΠΊΠ°
ΠΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠΈΠ»ΡΡΡΠ°
SVG ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ ΡΠ²Π΅ΡΠ° Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΌΠ°ΡΡΠΈΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ. Π¦Π²Π΅ΡΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΈΠΊΡΠ΅Π»Ρ [R, G, B, A]
ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΌΠ°ΡΡΠΈΡΠ΅ΠΉ, ΡΠΌΠ½ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ Π½Π° ΡΠ²Π΅ΡΠΎΠ²ΡΡ ΠΌΠ°ΡΡΠΈΡΡ 5 Π½Π° 5 Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ²Π΅ΡΠ° [R', G', B', A']
.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: Π‘ΠΈΠΌΠ²ΠΎΠ» ΡΡΡΠΈΡ
Π° '
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠ΅ Π΄Π»Ρ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ.
| Π ' | | r1 r2 r3 r4 r5 | | Π | | Π' | | g1 g2 g3 g4 g5 | | Π³ | | Π' | = | b1 b2 b3 b4 b5 | * | Π | | Π' | | Π°1 Π°2 Π°3 Π°4 Π°5 | | Π | | 1 | | 0 0 0 0 1 | | 1 |
Π ΡΠΏΡΠΎΡΠ΅Π½Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅ Π½ΠΈΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΡΠ°ΡΡΡΠΈΡΡΠ²Π°Π΅ΡΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ²Π΅ΡΠΎΠ²ΠΎΠΉ ΠΊΠ°Π½Π°Π» Π² Π½ΠΎΠ²ΠΎΠΌ ΠΏΠΈΠΊΡΠ΅Π»Π΅. ΠΠΎΡΠ»Π΅Π΄Π½ΡΡ ΡΡΡΠΎΠΊΠ° ΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅ΡΡΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΡΠΎΡΠ½Π½Ρ.
R' = r1*R + r2*G + r3*B + r4*A + r5 G' = g1*R + g2*G + g3*B + g4*A + g5 Π' = b1*R + b2*G + b3*B + b4*A + b5 Π' = Π°1*R + Π°2*G + Π°3*Π + Π°4*Π + Π°5
ΠΠΎΠ·ΡΠΌΠΈΡΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΊΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΡΠ²Π΅ΡΠ° Π² Π½ΠΎΠ²ΠΎΠΌ ΠΏΠΈΠΊΡΠ΅Π»Π΅ ΠΈΠ»ΠΈ R'
:
ΠΡΠΎ ΡΡΠΌΠΌΠ°:
-
r1
ΡΠΌΠ½ΠΎΠΆΠ΅Π½Π½Π°Ρ Π½Π° ΠΊΡΠ°ΡΠ½ΡΠΉ ΡΠ²Π΅Ρ ΡΡΠ°ΡΠΎΠ³ΠΎ ΠΏΠΈΠΊΡΠ΅Π»ΡR
, -
r2
ΡΠ°Π· Π·Π΅Π»Π΅Π½ΡΠΉ ΡΠ²Π΅Ρ ΡΡΠ°ΡΠΎΠ³ΠΎ ΠΏΠΈΠΊΡΠ΅Π»ΡG
, -
r3
ΡΠ°Π· ΡΠΈΠ½Π΅Π³ΠΎ ΡΡΠ°ΡΠΎΠ³ΠΎ ΠΏΠΈΠΊΡΠ΅Π»ΡB
, -
r4
ΡΠ°Π· Π±ΠΎΠ»ΡΡΠ΅ Π°Π»ΡΡΡ ΡΡΠ°ΡΠΎΠ³ΠΎ ΠΏΠΈΠΊΡΠ΅Π»ΡA
, - ΠΏΠ»ΡΡ ΡΠ΄Π²ΠΈΠ³
r5
.
ΠΡΠΈ ΡΠΊΠ°Π·Π°Π½Π½ΡΠ΅ ΡΡΠΌΠΌΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π»ΡΠ±ΡΠΌΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ ΡΠΈΡΠ»Π°ΠΌΠΈ, Ρ ΠΎΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ R’ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΆΠ°Ρ ΠΌΠ΅ΠΆΠ΄Ρ 0 ΠΈ 1. Π’ΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ ΠΊΠ°ΡΠ°Π΅ΡΡΡ G’ , B’ ΠΈ A’ .
R' = r1 * R + r2 * G + r3 * B + r4 * A + r5 ΠΠΎΠ²ΡΠΉ ΠΊΡΠ°ΡΠ½ΡΠΉ = [r1 * ΡΡΠ°ΡΡΠΉ ΠΊΡΠ°ΡΠ½ΡΠΉ] + [r2 * ΡΡΠ°ΡΡΠΉ Π·Π΅Π»Π΅Π½ΡΠΉ] + [r3 * ΡΡΠ°ΡΡΠΉ ΡΠΈΠ½ΠΈΠΉ] + [r4 * ΡΡΠ°ΡΡΠΉ Π°Π»ΡΡΠ°] + [ΡΠ΄Π²ΠΈΠ³ r5]
ΠΡΠ»ΠΈ, ΡΠΊΠ°ΠΆΠ΅ΠΌ, ΠΌΡ Ρ
ΠΎΡΠΈΠΌ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠ΅ΡΠ½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π±ΠΎΠ»Π΅Π΅ ΠΊΡΠ°ΡΠ½ΡΠΌ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°ΡΡ r5
ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΠΌ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΠΌ ΡΠΈΡΠ»ΠΎΠΌ x , ΡΠ²Π΅Π»ΠΈΡΠΈΠ² ΠΊΡΠ°ΡΠ½ΠΎΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΈΠΊΡΠ΅Π»Ρ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π° Ρ
.
ΠΠ΄Π΅Π½ΡΠΈΡΠ½Π°Ρ ΠΌΠ°ΡΡΠΈΡΠ° Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
R G B A W Π ' | 1 0 0 0 0 | Π' | 0 1 0 0 0 | Π' | 0 0 1 0 0 | Π' | 0 0 0 1 0 |
Π Π½Π΅ΠΌ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΎΠ²Π½ΠΎ Π² 1 ΡΠ°Π· ΠΏΡΠ΅Π²ΡΡΠ°Π΅Ρ ΡΡΠ°ΡΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΈ Π±ΠΎΠ»ΡΡΠ΅ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ. ΠΡΡΡΠ΄Π° ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ Π½Π°ΡΠΈΠ½Π°ΡΡ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΠΈ Ρ ΠΌΠ°ΡΡΠΈΡΠ΅ΠΉ.
ΠΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ | ΠΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠΈΠ»ΡΡΡΠ° |
---|---|
Π Π°Π·ΡΠ΅ΡΠ΅Π½Π½ΡΠΉ ΠΊΠΎΠ½ΡΠ΅Π½Ρ | ΠΡΠ±ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² Π»ΡΠ±ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅: , |
ΠΠ»ΠΎΠ±Π°Π»ΡΠ½ΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΡ
- ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΡ
- ΠΡΡΠΈΠ±ΡΡΡ ΠΏΡΠ΅Π·Π΅Π½ΡΠ°ΡΠΈΠΈ
- ΠΡΡΠΈΠ±ΡΡΡ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΎΠ² ΡΠΈΠ»ΡΡΡΠ°, Π²ΠΊΠ»ΡΡΠ°Ρ Π°ΡΡΠΈΠ±ΡΡΡ
x
,y
,ΡΠΈΡΠΈΠ½Π°
,Π²ΡΡΠΎΡΠ°
ΠΈΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ
Π°ΡΡΠΈΠ±ΡΡΡ. -
ΠΊΠ»Π°ΡΡ
-
ΡΡΠΈΠ»Ρ
Π‘ΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΡ
-
Π²
: ΠΠ½Π°ΡΠ΅Π½ΠΈΡ Π²ΠΊΠ»ΡΡΠ°ΡΡSourceGraphic
,SourceAlpha
,BackgroundImage
,BackgroundAlpha
,FillPaint
,StrokePaint
ΠΈΠ»ΠΈ ΡΡΡΠ»ΠΊΡ Π½Π° Π΄ΡΡΠ³ΠΎΠΉ ΠΏΡΠΈΠΌΠΈΡΠΈΠ² ΡΠΈΠ»ΡΡΡΠ° . -
ΡΠΈΠΏ
: Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π²ΠΊΠ»ΡΡΠ°ΡΡΠΌΠ°ΡΡΠΈΡΡ
,Π½Π°ΡΡΡΠ΅Π½Π½ΠΎΡΡΡ
,ΠΎΡΡΠ΅Π½ΠΎΠΊ Rotate
ΠΈΡΡΠΊΠΎΡΡΡ Π΄ΠΎ Π°Π»ΡΡΠ°-ΠΊΠ°Π½Π°Π»Π°
. -
Π·Π½Π°ΡΠ΅Π½ΠΈΡ
: ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΠΈΠΏΠ° ΠΌΠ°ΡΡΠΈΡΡ, ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ΅ Π² Π°ΡΡΠΈΠ±ΡΡΠ΅ΡΠΈΠΏΠ°
.
ΠΡΠΎΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ SVGFEColorMatrixElement
.
SVG
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ
Π‘ΠΊΡΠΈΠ½ΡΠΎΡ | ΠΠΈΠ²ΠΎΠΉ ΠΎΠ±ΡΠ°Π·Π΅Ρ |
---|---|
Π‘ΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ |
---|
ΠΠΎΠ΄ΡΠ»Ρ ΡΡΡΠ΅ΠΊΡΠΎΠ² ΡΠΈΠ»ΡΡΡΠ°, ΡΡΠΎΠ²Π΅Π½Ρ 1 # feColorMatrixElement |