如何从一个canvas复制到其他canvas
这是jsfiddle
我有这个作为我的源canvas
HTML
Source Canvas
Destination Canvas
JavaScript的
var sourceImage, ctx, sourceCanvas, destinationCanvas; //get the canvases sourceCanvas = document.getElementById('source'); destinationCanvas = document.getElementById('destination'); //draw the source image to the source canvas ctx = sourceCanvas.getContext('2d'); function start() { ctx.drawImage(img1, 0, 0); ctx.globalCompositeOperation = "source-atop"; var pattern = ctx.createPattern(img, 'repeat'); ctx.rect(0, 0, sourceCanvas.width, sourceCanvas.height); ctx.fillStyle = pattern; ctx.fill(); ctx.globalAlpha = .10; ctx.drawImage(img1, 0, 0); ctx.drawImage(img1, 0, 0); ctx.drawImage(img1, 0, 0); //ctx.globalAlpha = 1; } var img1 = new Image(); var img = new Image(); img.onload = function () { img1.onload = function () { start(); } img1.src = "https://dl.dropboxusercontent.com/u/139992952/stackoverflow/4jiSz1.png"; } img.src = "https://dl.dropboxusercontent.com/u/139992952/stackoverflow/BooMu1.png";
我想在我的目标canvas中显示源canvas中的内容。
我累了
var image, destinationCtx; //create the image image = new Image(); //get the base64 data image.src = sourceCanvas.toDataURL('image/png'); //get the destination context destinationCtx = destinationCanvas.getContext('2d'); //copy the data destinationCtx.drawImage(image, 0, 0); //done
但没有运气。 我错过了什么吗? 通过imageData复制,通过Base64数据复制,通过直接绘制复制任何方法都可以完成我的工作。 当我尝试
http://jsperf.com/copying-a-canvas-element它复制但是当我把我的源canvas作者它不起作用? 我错过了什么吗?
您可以直接将一个canvas复制到其他canvas上 像这样…
var destinationCtx; //get the destination context destinationCtx = destinationCanvas.getContext('2d'); //copy the data destinationCtx.drawImage(sourceCanvas, 0, 0);
您可以使用源canvas中的getImageData和putImageData到目标canvas。与其他方法相比,这是最快的。
var sourceCtx, destinationCtx, imageData; sourceCtx = sourceCanvas.getContext('2d'); destinationCtx = destinationCanvas.getContext('2d'); imageData = sourceCtx.getImageData(0, 0, sourceCanvas.width - 1, sourceCanvas.height - 1); destinationCtx.putImageData(imageData, 0, 0);