我可以像here这样的图像添加过滤器:
// apply grayscale filter to second image
filteredYoda.applyFilter({
filter: Kinetic.Filters.Grayscale,
callback: function() {
layer.draw();
}
});
,但我如何删除它并获得初始图像?
更新 解决问题的代码:
imageCanvas.initailImage = imageCanvas.getImage();
imageCanvas.disconnect = function () {
imageCanvas.applyFilter({
filter: Kinetic.Filters.Grayscale,
callback: function() {
//imageCanvas.deviceName += " - Disconnected.";
stage.get('#deviceLayer')[0].draw();
}
});
};
imageCanvas.connect = function () {
if (imageCanvas.hasOwnProperty('initailImage')) {
imageCanvas.setImage(imageCanvas.initailImage);
stage.get('#deviceLayer')[0].draw();
}
};
答案 0 :(得分:1)
目前似乎没有办法做到这一点。我在当前版本的源代码中探讨过,我找不到任何会删除过滤器的函数调用。
过滤器本身实际上是对原始图像数据应用一些数学运算的函数,因此一种方法可能是定义自己的过滤器,该过滤器应用逆方程。但是,如果不增加额外的复杂性,可能无法计算原始值。
所以,如果你不想尝试(以及谁会责怪你......),你也可以从同一个来源制作一个新的图像并将其单独存储,以显示为过滤后的图像。这有点令人讨厌,不幸的是克隆方法现在也无法正常工作(你会得到对同一个变量的引用),但这可能是最简单的方法。
最后,当然,您可能更愿意等待实现更多过滤器支持。但是,我无法告诉你何时会发生这种情况。
答案 1 :(得分:-2)
轻松使用以下
YOURIMAGEORSHAPE.clearFilter();
stage.draw(); // or layer.draw(); depending on your setup