/* * 手太欠 * 愿这世界都如故事里一样 美好而动人~ */ Page({ /** * 页面的初始数据 */ data: { nameInfo: '', // 用户名 invite : '', // 邀请码 qrcode : '', // 二维码 posters : [], // 海报数组 current : 0, // 选项卡下标 }, /** * 生命周期函数--监听页面显示 */ onLoad() { let miniShareFun = wx.$api.user.poster({ url: 'pages/mall/index' }) // wx.$api.user.poster({ url: 'pages/mall/index' }).then(res => { // console.log(res.data) // this.setData({ // nameInfo : res.data.name, // posters : res.data.posters, // qrcode : res.data.qrcode // }) // }) wx.showLoading({ title: '加载中...', mask : true }) Promise.all([miniShareFun]).then(res => { let miniShareData = res[0].data this.setData({ nameInfo : miniShareData.name, posters : miniShareData.posters, qrcode : miniShareData.qrcode, invite : miniShareData.invite, current : 0 }) // wx.getImageInfo({ // src : miniShareData.qrcode, // success : qrcodePath => { // this.setData({ // qrcode : qrcodePath.path, // posters : miniShareData.posters, // nameName : miniShareData.name, // current: 0 // }) // } // }) wx.hideLoading() }) }, swiperChange(e) { let index = e.detail.current this.setData({ current: index }) }, /** * 检查授权信息 */ onCheckSetting(){ wx.getSetting({ success: res => { if(res.authSetting['scope.writePhotosAlbum'] || res.authSetting['scope.writePhotosAlbum'] === undefined){ this.onCanvas() return } wx.showModal({ title : '提示', content : '暂未授权小程序写入您的相册,无法存储海报', confirmColor: '#144592', confirmText : '去设置', success: res => { if (res.confirm) { wx.openSetting() } } }) } }) }, /** * 生成海报 */ onCanvas(){ wx.showLoading({ title: '加载中...', mask : true }) wx.getImageInfo({ src: this.data.posters[this.data.current].cover, success: imgInfo => { wx.hideLoading() wx.showLoading({ title : '生成海报中...', mask : true }) let posterSrc = imgInfo.path let posterW = this.data.posters[this.data.current].width let posterH = this.data.posters[this.data.current].height let posterY = this.data.posters[this.data.current].qrcode.y let posterX = this.data.posters[this.data.current].qrcode.x let qrcodeSize = this.data.posters[this.data.current].qrcode.size let qrcodeSrc = this.data.qrcode let nameY = this.data.posters[this.data.current].font.font_y let nameColor = this.data.posters[this.data.current].font.font_color wx.createSelectorQuery().select('#canvas').fields({ node: true, size: true }).exec(res => { const canvas = res[0].node; const ctx = canvas.getContext("2d"); const img = canvas.createImage() const code = canvas.createImage() const dpr = wx.getSystemInfoSync().pixelRatio // 设置画布 canvas.width = posterW * dpr canvas.height = posterH * dpr ctx.scale(dpr, dpr) // 清理画布 ctx.clearRect(0, 0, canvas.width, canvas.height) // 绘制背景 img.src = posterSrc img.onload = () => { ctx.drawImage(img, 0, 0, posterW, posterH) // 绘制图片二维码 code.src = qrcodeSrc code.onload = () => { var x = (posterX - 0 + 60); var y = (nameY - 0 + 20); //绘制字体 ctx.font = '22px "微软雅黑"'; ctx.fillStyle = nameColor; ctx.textAlign = "center"; ctx.fillText(this.data.nameInfo, x, y); // ctx.arc( posterX + qrcodeSize/2, posterY + qrcodeSize/2, qrcodeSize/2 + 5, 0, 2 * Math.PI, false); ctx.arc(Number(posterX) + qrcodeSize/2, Number(posterY) + Number(qrcodeSize/2), Number(qrcodeSize/2 + 5), 0, 2 * Math.PI,true); ctx.fillStyle = "#ffffff"; ctx.fill(); ctx.drawImage(code, posterX, posterY, qrcodeSize, qrcodeSize) // 保存海报 wx.canvasToTempFilePath({ canvas : canvas, width : canvas.width, height : canvas.height, destWidth : canvas.width, destHeight : canvas.height, quality : 1, success : paths => { wx.saveImageToPhotosAlbum({ filePath: paths.tempFilePath, success: res => { wx.showToast({ title : '海报已保存', }) } }) }, fail: () => { wx.hideLoading() wx.showModal({ title: '提示', content: '暂未授权小程序写入您的相册,无法存储海报', confirmColor: '#e50d01', confirmText: '去设置', success: res => { if (res.confirm) { wx.openSetting() } } }) } }) } } }) } }) }, /** * 微信分享 */ onShareAppMessage(){ this.setData({ shareSee: false }) return { title : '绚火健康品牌主张', path : "/pages/mall/index?invite=" + this.data.invite } } })