如何下载带背景图片的画布?

时间:2014-04-10 13:03:48

标签: javascript css html5-canvas

我有一个canvas元素,我通过代码动态设置背景。然后我使用Sketch库(http://intridea.github.io/sketch.js/)在画布上绘图。 - 这一切都有效。

但是,每当我尝试使用canvas.toDataURL(“image / png”)转换画布时,它都可以保存画布图,但不保存背景。 - 我知道这是按照设计工作的。

有没有办法合并这两个?在我完成绘图并试图导出它之后,我想到可以将图像src设置为背景src的想法,但我不确定。有没有人有这方面的经验?

3 个答案:

答案 0 :(得分:0)

如何在画布中添加背景?你在css中设置它作为背景图像吗?或者您是将图像直接添加到画布?根据示例here,我认为您需要执行后者。

答案 1 :(得分:0)

正如您所发现的那样,画布及其背景是分开维护的,而toDataURL也不会捕捉背景。

您可以使用画布合成将背景与草图组合。

'目的地'合成模式可让您在草图背后绘制背景

context.globalCompositeOperation="destination-over";

context.drawImage(backgroundImage,0,0);

现在已经在草图后面绘制了背景像素,并且两者都将使用toDataURL捕获。

答案 2 :(得分:0)

是的,您是正确的。我将背景图像与画布图像一起获取并下载。

 ctx.width = 2503;
    ctx.height = 250;
    ctx.globalCompositeOperation="destination-over";
    var background = new Image();
    background.src = "http://localhost/xxxxx/xxxxx/xxxxx/xxxxx/ecg_back.png";   
    ctx.drawImage(background, 0, 0);
    // create pattern
    var ptrn = ctx.createPattern(background, 'repeat'); // Create a pattern with this image, and set it to "repeat".
    ctx.fillStyle = ptrn;
    ctx.fillRect(0, 0, ctx.width, ctx.height);