碰见一个需求,把一张图片和用户的二维码图片合成一张
006bYVyvgy1fh9c8kz38cj30dz09owl9.jpg
参考w3cshool和一些资料实现需求
demo.html

1
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文件放到服务器下

希望这篇文章能给你带来知识和乐趣,喜欢博主的文章可以加博主好友哦

有好的文章也可以向博主投稿哦