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