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 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105
| getPost(e) { if (wx.getStorageSync('isLogin')) { if (e.detail.errMsg != "getUserInfo:ok") { wx.showModal({ title: '提示!', content: '请允许授权,否则无法生成海报!', showCancel: false }) return false } let avatar = e.detail.userInfo.avatarUrl let nickname = e.detail.userInfo.nickName const that = this; wx.showLoading({ title: '海报生成中...', mask: true }) wx.createSelectorQuery().select('#canvas').fields({ node: true, size: true, }).exec(async (res) => { console.log(res) const canvas = res[0].node; const ctx = canvas.getContext('2d'); const width = res[0].width; const height = res[0].height; if(this.data.flag){ const dpr = wx.getSystemInfoSync().pixelRatio canvas.width = width * dpr; canvas.height = height * dpr; ctx.scale(dpr, dpr); this.data.flag = false; } const bgImg = canvas.createImage(); bgImg.src = wx.getStorageSync('postBg'); let bgImgPo = await new Promise((resolve, reject) => { bgImg.onload = () => { resolve(bgImg) } bgImg.onerror = (e) => { reject(e) } }); ctx.drawImage(bgImgPo, 0, 0, 257, 389) ctx.font = "normal bold 14px sans-serif"; ctx.fillStyle = "#FFFFFF" ctx.fillText(`${nickname}邀您参加`, 42, 24) ctx.font = "normal bold 14px sans-serif"; ctx.fillStyle = "#FFFFFF" ctx.strokeStyle = "#4B32A9" ctx.strokeText('长按识别二维码参与', 75, 373) ctx.fillText('长按识别二维码参与', 75, 373)
function canvasQR(qrImgUrl) { const qrImg = canvas.createImage(); qrImg.src = qrImgUrl; qrImg.onload = () => { ctx.save(); ctx.beginPath() ctx.arc(128, 319, 32, 0, 2 * Math.PI, false) ctx.clip() ctx.drawImage(qrImg, 96, 287, 65, 65); ctx.closePath(); ctx.restore(); } } canvasQR('http://www.guoxh.com/blog/img/blog/qr.png');
function canvasWxHeader(headImageLocal) { const headerImg = canvas.createImage(); headerImg.src = headImageLocal; headerImg.onload = () => { ctx.save(); ctx.beginPath() ctx.arc(26, 21, 12, 0, 2 * Math.PI, false) ctx.clip() ctx.drawImage(headerImg, 14, 5, 24, 30); ctx.closePath(); ctx.restore(); wx.hideLoading(); } } canvasWxHeader(avatar);
that.setData({ postPopup: true }) }) } else { wx.navigateTo({ url: '/pages/login/login', }) }
},
|