CamanJS - 替换实例

时间:2013-06-06 15:27:37

标签: javascript html5-canvas camanjs

如果我有一张我应用滤镜的图片,例如Lomo过滤器,有没有办法让当前的Caman实例?

意思是,如果我想再用我应用过滤器的图像上的亮度来玩,并使用this.revert();重置亮度,我希望它恢复到带过滤器的画布我刚刚应用它。

这可能吗?

我在尝试应用多种效果时遇到了噩梦,一次只能使用一种效果(预设过滤器除外),然后将状态传递给......

2 个答案:

答案 0 :(得分:1)

如果我理解,你想要应用their example page所示的过滤器(“Lomo”),然后摆弄一些属性(如亮度),然后将更改还原为“Lomo”过滤器?

为什么不再单击过滤器(“Lomo”)?

编辑: 您应该查看guide并使用默认值(如过滤器)实现您自己的方法。

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

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

答案 1 :(得分:0)

如果我对您的理解正确,则希望应用滤镜并播放其他效果,例如亮度和对比度等,
我编写了一些代码,可以根据您的需要进行操作

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

在上面的代码中,我将所有亮度像对比度之类的效果存储在像effect = { brightness : { min : -100, max: 100, value : 0 }, contrast : { min : -100, max: 100, value : 0 }, saturation : { min : -100, max: 100, value : 0 } };这样的效果变量中

和数组中的预设

presets = [
    {filter:'vintage',name : 'Vintage'},
    {filter:'lomo',name:'Lomo'},
    {filter: 'clarity', name:'Clarity'},
    {filter:'sinCity', name:'Sin City'}
    ];

因此,每次添加任何预设或更改任何效果值时,我都会更改变量中的值并再次渲染画布
对我来说很好用
如果您还有其他问题,请告诉我