0

ここのように画像にフィルターを追加できます:

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

2 に答える 2

1

現時点ではこれを行う方法はないようです。現在のバージョンのソース コードを調べてみましたが、フィルターを削除する関数呼び出しが見つかりません。

フィルター自体は、実際には生の画像データに少しの数学を適用する関数であるため、逆方程式を適用する独自のフィルターを定義することも 1 つの方法です。ただし、余分な複雑さを追加せずに元の値を計算することは不可能であることが判明する場合があります。

したがって、それを試したくない場合 (そして誰があなたを責めるでしょうか..) は、同じソースから新しい画像を作成し、それを個別に保存して、フィルター処理された画像として表示することもできます。これは少し面倒です。残念ながら、クローン メソッドも現在は適切に機能しません (同じ変数への参照を取得します)。しかし、これが最も簡単な方法かもしれません。

そして最後に、もちろん、より多くのフィルタ サポートが実装されるまで待ちたいと思うかもしれません。ただし、これがいつ発生するかはわかりませんでした。

于 2012-11-07T19:27:02.550 に答える
-2

以下を簡単に使用

YOURIMAGEORSHAPE.clearFilter(); 
stage.draw(); // or layer.draw(); depending on your setup 
于 2014-02-03T11:56:11.090 に答える