2014-10-09 73 views
4

我使用CamanJS为我的网站添加了一些图像处理功能,它是一个简单而优秀的库,但它的文档仍然很差。CamanJS:替换图像

我正在上传图片到我的网站,然后我将所有的效果应用到上传的图片上(它不保存在服务器上,我在客户端修改了它)。 官方网站(http://camanjs.com/guides/#BasicUsage)上,如下所示:

function invertColors() { 
    Caman("#original-img", function() { 
     this.invert().render(); 
    }); 
} 

问题是,当我重新上传新的图片。显然CamanJS会保留第一张图片,并且不会显示新图片。 当我读到这个问题,我发现这个答案的唯一地方是在这里: CamanJS - change underlying canvas after applying filters/manipulations

,但我很抱歉,答案不是我说清楚。所以我必须再问一遍。 答案建议使用reloadCanvasData()但我不知道如何使用它,我尝试了很多方法,但都徒劳无功! 我想:

Caman("#original-img", function() { 
    this.reloadCanvasData(); 
}); 

和:

Caman.reloadCanvasData(); 

任何人都可以提供一个工作的例子吗? 感谢

回答

0

只要打电话给复归()当您需要将原始图像:

Caman("#original-img", function() { 
     this.revert(); 
     this.render(); 
    }); 
0

我想我会帮助那些谁来到这里寻找如何更换像素数据,而不仅仅是一个装图像:

   can1 = document.getElementById("MyCanvas1"); 
       ctx1 = can1.getContext("2d"); 
       var c = <do what ever you need and make a new canvas here> 
       ctx1.putImageData(c, 0,0); // <---this replaces the pixeldata 

       Caman("#MyCanvas1", function() { 
        this.render(); 
       }); 

这样你可以在像素级别处理图像,然后将其恢复为camanjs。

0

作为解决方案,我所做的是清除画布并再次插入HTML图像标记。致电前二Image.with camanjs

类似以下

function clearCanvas() { 
    $('#ImageParentDiv').empty(); 

    var htmlTag = '<img src="../images/Loading.gif" id="original-img">'; 
    $('#ImageParentDiv').html(htmlTag); 
}