html5 – 如何将一个画布的内容复制到另一个画布本地

前端之家收集整理的这篇文章主要介绍了html5 – 如何将一个画布的内容复制到另一个画布本地前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想复制一个画布的所有内容,并将它们转移到客户端的另一个。我会认为我会使用canvas.toDataURL()和context.drawImage()方法来实现这个,但我遇到了几个问题。

我的解决方案是获取Canvas.toDataURL()并将其存储在Javascript中的Image对象中,然后使用context.drawImage()方法将其放回。

但是,我相信toDataURL方法返回一个64位编码标签与“data:image / png; base64,”前面。这似乎不是一个有效的标签,(我可以总是使用一些RegEx删除这个),但是64位编码字符串之后的“数据:image / png; base64,”子字符串有效的图像?我可以说image.src = iVBORw … ASASDAS,并将其画在画布上吗?

我看了一些相关的问题:
Display canvas image from one canvas to another canvas using base64

但是解决方案似乎不正确。

解决方法

实际上,你不必创建一个图像。 drawImage()将接受一个Canvas以及一个Image对象。
//grab the context from your destination canvas
var destCtx = destinationCanvas.getContext('2d');

//call its drawImage() function passing it the source canvas directly
destCtx.drawImage(sourceCanvas,0);

方法比使用ImageData对象或Image元素更快。

注意,sourceCanvas可以是HTMLImageElement,HTMLVideoElementHTMLCanvasElement.正如Dave在这个答案下面的注释中提到的,你不能使用画布图上下文作为你的源代码。如果你有一个画布上下文而不是从它创建的canvas元素,那么在context.canvas上的上下文中有一个对原始canvas元素的引用。

这里是一个jsPerf来演示为什么这是唯一正确的方式克隆画布:http://jsperf.com/copying-a-canvas-element

猜你在找的HTML5相关文章