Javascript 如何删除kineticjs中图像的过滤器?

Javascript 如何删除kineticjs中图像的过滤器?,javascript,kineticjs,Javascript,Kineticjs,我可以向图像添加过滤器,如: ,但如何删除它并获得初始图像 更新: 解决此问题的代码: imageCanvas.initailImage = imageCanvas.getImage(); imageCanvas.disconnect = function () { imageCanvas.applyFilter({ filter: Kinetic.Filters.Grayscale, callback: funct

我可以向图像添加过滤器,如:

,但如何删除它并获得初始图像

更新: 解决此问题的代码:

    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();
        }
    };

目前似乎没有任何方法可以做到这一点。我翻遍了当前版本的源代码,找不到任何可以删除过滤器的函数调用

过滤器本身实际上是对原始图像数据应用一点数学知识的函数,因此一种方法可能是定义自己的过滤器,应用逆方程。但是,如果不增加额外的复杂性,可能无法计算原始值

因此,如果你不想尝试(谁会责怪你呢…),你也可以从同一个源创建一个新图像,并单独存储,显示为过滤后的图像。这有点烦人,不幸的是克隆方法现在也不能正常工作(您将获得对同一变量的引用),但这可能是最简单的方法

最后,当然,您可能更愿意等待更多过滤器支持的实现。不过,我无法告诉您何时可能发生这种情况。

请轻松使用以下命令

YOURIMAGEORSHAPE.clearFilter(); 
stage.draw(); // or layer.draw(); depending on your setup 

我的解决方法是:调用
getImage
方法保存初始图像,需要获取初始图像时,通过
setImage
方法恢复初始图像。所以,它起作用了。
YOURIMAGEORSHAPE.clearFilter(); 
stage.draw(); // or layer.draw(); depending on your setup