最近做一个完整的系统,前端中涉及到一个推广图片的生成,其中推广图片是由一个变化的链接生成的二维码与一个固定图片拼接而成
实现demo:
html部分:
<div> <img id="qrcode" src="/img/promotion/qrcode.png" alt="二维码"> <img id="poster" src="/img/promotion/poster.png" alt="海报模板"> <img id="myPoster" alt="合成海报"> </div> <button ng-click="drawPosterImage()">合成图片</button>
js部分:
//生成海报 $scope.drawPosterImage = function(){ var canvas; canvas = document.createElement("canvas"); canvas.width = 1242; canvas.height = 2208; var context = canvas.getContext("2d"); context.rect(0 , 0 , canvas.width , canvas.height); context.fillStyle = "#fff"; context.fill(); var myImage2 = new Image(); myImage2.src = $("#poster").attr("src"); myImage2.crossOrigin = 'Anonymous'; myImage2.onload = function(){ context.drawImage(myImage2 , 0 , 0 , 1242 , 2208); var myImage = new Image(); myImage.src = $("#qrcode").attr("src"); myImage.crossOrigin = 'Anonymous'; myImage.onload = function(){ context.drawImage(myImage , 499 , 1703 , 243 , 243); var base64 = canvas.toDataURL("image/png"); //获取base64的图片流 var img = document.getElementById('myPoster'); img.setAttribute('src' , base64); } } }
其中生成二维码是使用的
qrcodejs2-fixpnpm install qrcodejs2-fix
注意: 这里使用的是qrcode2-fix,因为我的是在vue3项目中,使用qrcode2会出现一些问题
标签:实战,src,canvas,myImage2,前端,myImage,context,var From: https://www.cnblogs.com/xingxia/p/18528450/web_canvas