canvas两张图片合成一张
碰见一个需求,把一张图片和用户的二维码图片合成一张
参考w3cshool和一些资料实现需求
demo.html1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38<html>
<body>
<p>要使用的图像:</p>
<img id="tulip" src="eg_tulip.jpg" alt="The Tulip" />
<p>画布:</p>
<canvas id="myCanvas" width="500" height="300" style="border:1px solid #d3d3d3;background:#ffffff;">
Your browser does not support the HTML5 canvas tag.
</canvas>
<p>合成的图像:</p>
<img id="tulip2" src="" alt="The Tulip" />
<script>
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
var img=document.getElementById("tulip");
img.onload = function(){
ctx.drawImage(img,0,0);
ctx.drawImage(img,100,100);
convertCanvasToImage();
};
//从 canvas 提取图片 image
function convertCanvasToImage()
{
var myCanvas = document.getElementById("myCanvas");
var dataURL = myCanvas.toDataURL("image/png");
var img=document.getElementById("tulip2");
img.setAttribute('src', dataURL);
console.log(dataURL);
}
</script>
</body>
</html>
注意:若toDataURL方法报错 Failed to execute ‘toDataURL’ on ‘HTMLCanvasElement’: Tainted canvases may not be exported.
原因:是由于文件所在的域和图片和页面所在域不同,出现跨域传输的问题。
解决:1.把图片放到本地。2把demo文件放到服务器下
希望这篇文章能给你带来知识和乐趣,喜欢博主的文章可以加博主好友哦
有好的文章也可以向博主投稿哦
您的喜欢是作者写作最大的动力
QQ群和公众号