我一直在使用Fabric JS中的自定义过滤器。但我只是不知道如何撤消所做的任何事情。看起来像素会被过程覆盖,这很好,但我该如何回到原点呢?代码项目启动器在这里: https://github.com/pixolith/fabricjs-async-web-worker-filters
因此,在自定义过滤器中,结果将按如下方式放入画布:
imageDataArray.forEach( function( data ) {
cacheCtx.putImageData( data.data, 0, data.blocks );
} );
显示渲染中处理过的图像。但是,我不明白如何回归"原本的。我在处理之前尝试了这个:
var obj = canvas.getActiveObject();
var originalSource = obj._originalElement.currentSrc; // restore the original since filters trash the canvas
obj.filters[index] = filter;
obj.applyFilters(canvas.renderAll.bind(canvas));
但它没有"得到它"。我真的不希望每次重新加载图像,因为它们有时很大。任何帮助赞赏。
答案 0 :(得分:0)
如您所述,obj._originalElement
是您首次加载的图片的ORIGINAL元素。没有理由重新加载它,你有它。准备在画布上粉碎。
所以,只需执行obj.element = obj._originalElement
,即可在canvas.renderAll();