canvas合并图片并长按保存

代码实现

<div class="pho-bg">
   <img src="../../assets/images/FeedbackActivity/poster1.png" alt="" id="main2">
   <img src="" alt="" id="main1">
</div>
<div class="share-photos" v-show="drawShow">
  <div class="posters-photos">
    <canvas id="myCanvas" width="300" height="500" ref="index" v-show="false"></canvas>
    <div class="photo" id="captureId"></div>
    <div class="saveBtn" @click='savePic'>保存图片</div>
               
   </div>        
 </div>
<div id="qrcode" ref="qrcode" style="margin-bottom: 1.2rem;" v-show="false"></div>//绘制二维码

 

实现原理,找到X轴,Y轴位置及大小控制


 downLoad(){
  document.getElementById('qrcode').innerHTML = ''
  let qrCode='http://www.XXX.com/'//图片路径
  let url=qrCode
  let qrcode = new QRCode('qrcode', {
     width: 60,
     height: 60,
     text:'',
     colorDark: "#000",
     colorLight: "#fff",
     correctLevel : QRCode.CorrectLevel.H 
   })
    qrcode.clear()
    qrcode.makeCode(url) 
 },
 shareShow() {
   let qrcode = $('#qrcode')
   let canvas = qrcode.find('canvas').get(0)
   $('#main1').attr('src', canvas.toDataURL('image/jpg')) //某一状态将绘制的二维码赋给要拼接的图片中
 },
saveImg(){//拼接图片
   let main1 = document.getElementById('main1')
   let main2 = document.getElementById('main2')
   var canvas = document.getElementById('myCanvas'); 
   var ctx = canvas.getContext('2d'); 
   canvas.width = 280
   canvas.height = 500
   //main1.setAttribute('crossOrigin', 'anonymous')//图片是否跨域,服务器亲测有效,当然这可以不用也能保存
   ctx.rect(0, 0, 280, 500);
   ctx.drawImage(main2, 0, 0, 280, 500)
   ctx.drawImage(main1, 14, 437, 50, 50)
   var newImg = new Image();
   var dataUrl = canvas.toDataURL();
   newImg = document.createElement("img");
   newImg.src = dataUrl;
   $('.photo').append(newImg);
},
 savePic(){
     let myCanvas = document.getElementsByClassName('savaImg')[0].getElementsByTagName('canvas');
     let Url = myCanvas[0].toDataURL('image/png')//用手机点击保存无效,得图片上传到服务器
     var blob=new Blob([''], {type:'application/octet-stream'}); 
     var url = URL.createObjectURL(blob); 
     var a = document.createElement('a'); 
     a.href = Url; 
     a.download = "下载的图片"; 
     var e = document.createEvent('MouseEvents'); 
     e.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); 
     a.dispatchEvent(e); 
     URL.revokeObjectURL(url); 
 },

 

 

posted @ 2021-08-26 16:44  eternityAsr  阅读(222)  评论(0编辑  收藏  举报