<feComponentTransfer>
<feComponentTransfer>
SVG 滤镜基元会对每个像素的数据执行分量重映射。它可以实现亮度调整、对比度调整、色彩平衡或阈值处理等操作。
计算是在非预乘颜色值上进行的。颜色通过将每个通道(R、G、B 和 A)更改为子元素 <feFuncR>
、<feFuncB>
、<feFuncG>
和 <feFuncA>
返回的结果来修改。如果提供了多个相同的元素,则使用最后一个指定的元素;如果未提供任何元素来修改某个通道,则效果与为该通道提供了一个恒等变换相同。
与其它滤镜图元一样,它默认在 linearRGB
颜色空间中处理颜色分量。您可以使用 color-interpolation-filters
属性改为使用 sRGB
。
使用语境
属性
DOM 接口
此元素实现了 SVGFEComponentTransferElement
接口。
示例
SVG
html
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 300">
<defs>
<linearGradient
id="rainbow"
gradientUnits="userSpaceOnUse"
x1="0"
y1="0"
x2="100%"
y2="0">
<stop offset="0" stop-color="red"></stop>
<stop offset="0.2" stop-color="yellow"></stop>
<stop offset="0.4" stop-color="lime"></stop>
<stop offset="0.6" stop-color="cyan"></stop>
<stop offset="0.8" stop-color="blue"></stop>
<stop offset="1" stop-color="purple"></stop>
</linearGradient>
<filter id="identity" x="0" y="0" width="100%" height="100%">
<feComponentTransfer>
<feFuncR type="identity"></feFuncR>
<feFuncG type="identity"></feFuncG>
<feFuncB type="identity"></feFuncB>
<feFuncA type="identity"></feFuncA>
</feComponentTransfer>
</filter>
<filter id="table" x="0" y="0" width="100%" height="100%">
<feComponentTransfer>
<feFuncR type="table" tableValues="0 0 1 1"></feFuncR>
<feFuncG type="table" tableValues="1 1 0 0"></feFuncG>
<feFuncB type="table" tableValues="0 1 1 0"></feFuncB>
</feComponentTransfer>
</filter>
<filter id="discrete" x="0" y="0" width="100%" height="100%">
<feComponentTransfer>
<feFuncR type="discrete" tableValues="0 0 1 1"></feFuncR>
<feFuncG type="discrete" tableValues="1 1 0 0"></feFuncG>
<feFuncB type="discrete" tableValues="0 1 1 0"></feFuncB>
</feComponentTransfer>
</filter>
<filter id="linear" x="0" y="0" width="100%" height="100%">
<feComponentTransfer>
<feFuncR type="linear" slope="0.5" intercept="0"></feFuncR>
<feFuncG type="linear" slope="0.5" intercept="0.25"></feFuncG>
<feFuncB type="linear" slope="0.5" intercept="0.5"></feFuncB>
</feComponentTransfer>
</filter>
<filter id="gamma" x="0" y="0" width="100%" height="100%">
<feComponentTransfer>
<feFuncR type="gamma" amplitude="4" exponent="7" offset="0"></feFuncR>
<feFuncG type="gamma" amplitude="4" exponent="4" offset="0"></feFuncG>
<feFuncB type="gamma" amplitude="4" exponent="1" offset="0"></feFuncB>
</feComponentTransfer>
</filter>
</defs>
<g font-weight="bold">
<text x="0" y="20">Default</text>
<rect x="0" y="30" width="100%" height="20"></rect>
<text x="0" y="70">Identity</text>
<rect x="0" y="80" width="100%" height="20" filter="url(#identity)"></rect>
<text x="0" y="120">Table lookup</text>
<rect x="0" y="130" width="100%" height="20" filter="url(#table)"></rect>
<text x="0" y="170">Discrete table lookup</text>
<rect x="0" y="180" width="100%" height="20" filter="url(#discrete)"></rect>
<text x="0" y="220">Linear function</text>
<rect x="0" y="230" width="100%" height="20" filter="url(#linear)"></rect>
<text x="0" y="270">Gamma function</text>
<rect x="0" y="280" width="100%" height="20" filter="url(#gamma)"></rect>
</g>
</svg>
CSS
css
rect {
fill: url("#rainbow");
}
结果
规范
规范 |
---|
滤镜效果模块第 1 级 # feComponentTransferElement |
浏览器兼容性
加载中…