SVG stands for Scalable Vector Graphic. It can be used to make graphics and animations like in HTML canvas.
The <feConvolveMatrix> SVG filter primitive changes pixels in the input image with neighboring pixels to produce a resulting image.
Syntax:
<feConvolveMatrix in="" order="" kernelMatrix="" divisor=""
bias="" targetX="" targetY="" edgeMode="" kernelUnitLength=""
preserveAlpha="" />
Attributes:
- in - It stores input for the given primitive.
- order - It tests the size of the matrix to be used by the filter element. By default, it is 3 X 3.
- kernelMatrix - It defines the list of numbers that form the kernel matrix.
- divisor - It defines the sum of values of the kernel matrix. By default, it is set to 1.
- bias - It sets the range of the filter. By default, it is set to 0.
- targetX - It shifts the convolution matrix horizontally. (Range - 0 <= targetX < orderX).
- targetY - It shifts the convolution matrix vertically. (Range - 0 <= targetY < orderY).
- kernelUnitLength - It tells the intended distance between successive columns and rows in the kernelMatrix. The intended distance is represented in current filter units. The default value is 1.
- preserveAlpha - It value is either true or false. It indicates whether the convolution will only apply to the alpha and color channels. The default value is false.
Example 1:
<!DOCTYPE html>
<html>
<body>
<svg width="100%" height="220">
<defs>
<filter id="convolve">
<feConvolveMatrix kernelMatrix=
"1 5 -1 -1 0 4 0 0 -1" />
</filter>
</defs>
<rect x="40" y="40" width="100"
height="100"
filter: url(#convolve) style=
"stroke: #000000;
fill: darkgreen;" />
<g fill="#FFFFFF" stroke="black"
font-size="10" font-family="Verdana">
<text x="50" y="90"
filter="url(#convolve)">
GeeksForGeeks
</text>
</g>
</svg>
</body>
</html>
Output:
Example 2:
<!DOCTYPE html>
<html>
<title>SVG Filter</title>
<body>
<svg width="100%" height="220">
<defs>
<filter id="convolve">
<feConvolveMatrix kernelMatrix
="-7 -10 -15 -10 10 -1 0 0 -1" />
</filter>
</defs>
<rect x="1" y="1" width="198"
height="118"
style="stroke: #000000;
fill: none;
filter: url(#convolve);" />
<circle cx="100" cy="60" r="55"
stroke="black" stroke-width="3"
fill="Lightgreen"
filter: url(#convolve) />
<g fill="#FFFFFF" stroke="black"
font-size="10" font-family="Verdana">
<text x="60" y="62" filter="url(#convolve)">
GeeksForGeeks</text>
</g>
</svg>
</body>
</html>
Output: