CamanJS:替换图像

时间:2014-10-09 21:00:22

标签: 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(); 

任何人都可以提供一个有效的例子吗? 谢谢

3 个答案:

答案 0 :(得分:0)

只需在需要原始图片时调用revert():

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

答案 1 :(得分:0)

我以为我会帮助那些来到这里看看如何替换PIXEL数据的人,而不仅仅是一个加载的图像:

                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。

答案 2 :(得分:0)

作为一种解决方案,我所做的就是清除画布并再次插入一个HTML Image标签。在调用Second Image.with camanjs之前

类似于以下内容

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

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