SVG feComponentTransfer
线性函数不能像我期望的那样工作。应用于灰度图像的斜率-1和截距1应该反转图像:黑色 - >白色,白色 - >黑色,25%灰色 - > 75%灰色,50%灰色不变,依此类推。我的期望基于http://www.w3.org/TR/filter-effects/#feComponentTransferElement,它表示“C'=斜率* C +截距”其中“C是初始分量(例如'feFuncR'),C'是重新映射的分量;两者都在闭合区间[0,1]。“。svg feComponentTransfer线性函数
以下滤波器
<filter id="linear">
<feComponentTransfer>
<feFuncR type="linear" slope="-1" intercept="1" />
<feFuncG type="linear" slope="-1" intercept="1" />
<feFuncB type="linear" slope="-1" intercept="1" />
</feComponentTransfer>
</filter>
映射黑到白和白到黑,但中间值是关,例如50%的灰色地图为90%的灰色,75%的灰色地图为98%的灰色。一个简单的例子见http://jsfiddle.net/Rpjs2/。我在Firefox和Safari中获得相同的结果。
这是我第一次尝试SVG过滤器,所以我怀疑我误解了规范。有人能纠正我吗?
查看WebKit源代码中的[this example](http://src.chromium.org/chrome/branches/WebKit/195/LayoutTests/svg/custom/feComponentTransfer-Linear.svg)。使用类似的过滤器会“倒置”渐变(查看过滤器定义,因为描述它们的文本不正确),但并不完美。它似乎有点向左移动。 – seliopou
它实际上已经向左移动了很多,远不及通过应用-1 * c + 1而得到的值。我的第一个想法是,这是一个错误,因为它不符合w3规范,但Safari和Firefox以相同(显然是错误的)方式实现它是很奇怪的。我向Mozilla和WebKit提交了错误报告,如果他们认为它是一个错误,他们会报告回来。 – BobW
您在web平台文档中激发了我对doc feComponentTransfer的启发。让我知道你的想法:http://docs.webplatform.org/wiki/svg/elements/feComponentTransfer –