我为Snap创建了一个过滤器插件,用于返回值为(> = 0.5,> = 0.5,> = 0.5)的像素的离散值1和值(< 0.5,< 0) 0.5,小于0.5)
在此渐变中,最左边的像素是(1,1,1),最右边的像素是(0,0,0),中心像素是(0.5,0.5,0.5)
因此,我希望应用的插件在中间剖析渐变,使其中的一半完全变白,而其中一半完全变黑,但我的输出返回错误的值,如下图所示:
正如您所看到的,大约三分之一的渐变是白色的,而三分之二是黑色而不是具有相同比例的黑色和白色。
这是我的代码:
Snap.filter.discrete()
Snap.filter.discrete = function () {
var str = "0 1"
return Snap.format('<feComponentTransfer>' +
'<feFuncR type="discrete" tableValues="' + str + '"/>' +
'<feFuncG type="discrete" tableValues="' + str + '"/>' +
'<feFuncB type="discrete" tableValues="' + str + '"/>' +
'</feComponentTransfer>');
};
我哪里出错了?
答案 0 :(得分:3)
这是由于SVG中使用渐变和滤镜的默认颜色空间不匹配造成的:sRGB和linearRGB。如果你添加
color-interpolation-filters="sRGB"
到你的过滤元素 - 一切都应该有用。