📅  最后修改于: 2023-12-03 15:05:25.196000             🧑  作者: Mango
<feDisplacementMap>
元素<feDisplacementMap>
元素是SVG(可缩放矢量图形)中的一个滤镜元素,用于图像的扭曲和变形效果。它通过使用一个或两个输入图像(源图像和位移图像)来创建输出图像。
<feDisplacementMap in="input" in2="input2" scale="number" xChannelSelector="value" yChannelSelector="value" result="output"/>
in
:指定输入图像的来源。in2
:指定位移图像的来源。scale
:指定位移图像的缩放比例。xChannelSelector
:指定应用于红色通道的位移量。yChannelSelector
:指定应用于绿色和蓝色通道的位移量。result
:指定输出的ID。<feDisplacementMap>
元素通过使用图像的灰度值将源图像像素的位置进行位移,然后将位移后的像素值映射回输出图像上的像素。它通过在输入图像的相应像素周围创建一个“图像矢量场”来实现扭曲和变形的效果。
scale
属性用于控制位移图像的缩放大小。较大的值会产生较大的位移效果。xChannelSelector
和yChannelSelector
属性用于选择应用到各个通道的位移量,可选值有R
、G
、B
、A
和none
。result
属性用于指定输出结果的ID。以下示例演示了使用<feDisplacementMap>
元素创建图像的扭曲效果。
<svg width="400" height="300" xmlns="http://www.w3.org/2000/svg">
<filter id="displacementFilter">
<feTurbulence type="fractalNoise" baseFrequency="0.01" result="noise"/>
<feDisplacementMap in="SourceGraphic" in2="noise" scale="50" xChannelSelector="R" yChannelSelector="G" result="displaced" />
</filter>
<image xlink:href="input.jpg" width="400" height="300" filter="url(#displacementFilter)"/>
</svg>
在上述示例中,<feDisplacementMap>
元素将SourceGraphic
作为输入图像,并使用一些噪音(通过<feTurbulence>
元素生成)作为位移图像。scale
属性设置为50,xChannelSelector
属性设置为红色通道(R
),yChannelSelector
属性设置为绿色通道(G
)。最终生成的扭曲图像作为滤镜应用于<image>
元素上。
<feDisplacementMap>
元素用于创建SVG图像的扭曲和变形效果。请注意,上述示例代码中的input.jpg
和displacementFilter
仅用于演示目的,实际使用时需要根据实际情况进行修改。
参考文档: