截止到2017年11月18號,微信小程序官方還尚未開放直接分享到朋友圈的能力,但是勞動人民的智慧是偉大的,現(xiàn)在普遍的做法是,生成一張帶有小程序碼的圖片,保存到用戶相冊,用戶自行發(fā)布圖片到朋友圈
我的套路:
onShow: function () { var that = this; //1. 請求后端API生成小程序碼 that.getQr(); //2. canvas繪制文字和圖片 const ctx = wx.createCanvasContext('myCanvas'); var imgPath = '../../../image/intro.png' var bgImgPath = '../../../image/bgImgPath.png'; ctx.drawImage(imgPath, 0, 0, 600, 520); ctx.setFillStyle('white') ctx.fillRect(0, 520, 600, 280); ctx.drawImage(imgPath, 30, 550, 60, 60); ctx.drawImage(bgImgPath, 30, 550, 60, 60); ctx.drawImage(imgPath, 410, 610, 160, 160); ctx.setFontSize(28) ctx.setFillStyle('#6F6F6F') ctx.fillText('妖妖靈', 110, 590) ctx.setFontSize(30) ctx.setFillStyle('#111111') ctx.fillText('寵友們快來圍觀萌寵靚照', 30, 660) ctx.fillText('我在萌爪幼稚園', 30, 700) ctx.setFontSize(24) ctx.fillText('長按掃碼查看詳情', 30, 770) ctx.draw() }, // 3. canvas畫布轉成圖片 wx.canvasToTempFilePath({ x: 0, y: 0, width: 600, height: 800, destWidth: 600, destHeight:800, canvasId: 'myCanvas', success: function(res) { console.log(res.tempFilePath); that.setData({ shareImgSrc : res.tempFilePath }) }, fail:function (res) { console.log(res) } }) //4. 當用戶點擊分享到朋友圈時,將圖片保存到相冊 wx.saveImageToPhotosAlbum({ filePath:that.data.shareImgSrc, success(res) { wx.showModal({ title: '存圖成功', content: '圖片成功保存到相冊了,去發(fā)圈噻~', showCancel:false, confirmText:'好噠', confirmColor:'#72B9C3', success: function(res) { if (res.confirm) { console.log('用戶點擊確定'); } that.hideShareImg() } }) } })
canvas繪制單位為px,舉個例子,屏幕寬375,繪制375的畫布,保存的圖片就是375px,圖片像素度不夠會糊掉,所以我改進了一下套路:
1.請求后端API生成小程序碼(生成小程序碼需要access token,后端生成比較方便)
2.canvas繪制文字和圖片到畫布
繪制2倍屏幕寬度的canvas畫布,canvas畫布必須是可見狀態(tài)下,才可以被轉成圖片,可是他辣么大辣么丑肯定不能給用戶看見,那就給他定位定個巨大的數(shù)字超出屏幕就好了
3.畫布轉成圖片
4.當用戶點擊分享到朋友圈時,給用戶展示圖片,并將圖片保存到相冊
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯(lián)系,我們將在第一時間刪除處理。TEL:0731-84117792 E-MAIL:11247931@qq.com