Javascript CamanJS-替换实例

Javascript CamanJS-替换实例,javascript,html5-canvas,camanjs,Javascript,Html5 Canvas,Camanjs,如果我有一个应用过滤器的图像,例如Lomo过滤器,有没有办法使其成为当前的Caman实例 也就是说,如果我想在应用过滤器的图像上使用亮度,然后使用this.revert()要重置亮度,我希望它恢复到画布上我刚刚应用的过滤器 这可能吗 我正在做一个噩梦,试图应用许多效果,一次只应用一个(预设过滤器除外),并将状态进行到底…如果我理解,您想应用如图所示的过滤器(“Lomo”),然后摆弄一些属性(如亮度),然后将更改还原回“Lomo”过滤器 为什么不再次点击过滤器(“Lomo”)呢 编辑: 您可能应该

如果我有一个应用过滤器的图像,例如Lomo过滤器,有没有办法使其成为当前的Caman实例

也就是说,如果我想在应用过滤器的图像上使用亮度,然后使用
this.revert()
要重置亮度,我希望它恢复到画布上我刚刚应用的过滤器

这可能吗


我正在做一个噩梦,试图应用许多效果,一次只应用一个(预设过滤器除外),并将状态进行到底…

如果我理解,您想应用如图所示的过滤器(“Lomo”),然后摆弄一些属性(如亮度),然后将更改还原回“Lomo”过滤器

为什么不再次点击过滤器(“Lomo”)呢

编辑: 您可能应该查看并使用默认值实现自己的方法,如在过滤器中

u.Filter.register("lomo", function (D) {
        if (D == null) {
            D = true
        }
        this.brightness(15);
        this.exposure(15);
        this.curves("rgb", [0, 0], [200, 0], [155, 255], [255, 255]);
        this.saturation(-20);
        this.gamma(1.8);
        if (D) {
            this.vignette("50%", 60)
        }
        return this.brightness(5)
    });

我不认为你的要求是“开箱即用”的。

如果我理解正确,你想应用一个过滤器,并使用其他效果,如亮度和对比度等,
我制作了一些代码,可以根据您的需要工作

 Caman('#canvas-camanImage',"./../media/caman.png", function () {
        this.revert(false);
        for(var i = 0 ;i<selectedPresets.length;i++){
            this[selectedPresets[i]]();
        }
        for(var key in effect){
            this[key](effect[key].value);
        }
        this.render(function () {
        });
所以,每次添加任何预设或更改任何效果值时,我都会再次更改变量和渲染画布中的值

这对我来说很好
让我知道你是否关心其他问题

这可能值得向github上的Caman.js创建者询问:@Mike'Pomax'Kamermans-谢谢,已经这样做了,但没有回答,因为你找到了可行的解决方案,因为我也在考虑这个问题吗?不,我想申请(“Lomo”)滤镜,然后可能会在滤镜顶部增加一些亮度和对比度。每次更改后,例如亮度(我可能会选择添加亮度值10,但这还不够,所以决定添加15会更好),为了保存它,以指数方式添加它,它会恢复到原始实例(在本例中,为了避免将15添加到已经具有10的图像中,另外,添加10然后添加-10与根本不添加不同)。这会破坏任何更改,例如(“Lomo”)过滤器设置。目前,每次应用可能添加的内容时,我都会调出一个临时图像,但其繁琐且效率低下。希望最好的办法是在里面实现你自己的方法和twerk属性。谢谢,但这根本不会像这样工作,因为我使用的是所有的过滤器和几乎所有的过滤器(可能是错误的词),例如亮度、对比度等,这是我要求的全部要点。跟踪状态很棘手。不是不可能,我现在正在做,但是,它比我想要的要复杂得多。你能不能调用一个函数来缓存每个设置,然后重新应用(注册?)这些设置+你的新调整到同一个图像?
presets = [
    {filter:'vintage',name : 'Vintage'},
    {filter:'lomo',name:'Lomo'},
    {filter: 'clarity', name:'Clarity'},
    {filter:'sinCity', name:'Sin City'}
    ];