微信的小程式是沒有分享到朋友圈的功能的。小程式目前只能分享到群里或者發給好友。但是業務需要方便推廣,需要分享到朋友圈。 經過度娘後,得出了以下思路:利用小程式canvas繪製圖片,將背景圖和二維碼繪製成一張圖片。百度過幾個好的demo,參考了一下,本以為會很簡單就解決這個問題,然而這個並不是小程式c ...
微信的小程式是沒有分享到朋友圈的功能的。小程式目前只能分享到群里或者發給好友。但是業務需要方便推廣,需要分享到朋友圈。
經過度娘後,得出了以下思路:利用小程式canvas繪製圖片,將背景圖和二維碼繪製成一張圖片。百度過幾個好的demo,參考了一下,本以為會很簡單就解決這個問題,然而這個並不是小程式canvas的難點!
WXML
<view class='canvas-box'> <canvas style="width:750rpx; height:940rpx;" canvas-id="myCanvas"/> <image src='{{imagePath}}'></image> </view><button class='inviteBtn' bindtap='createSharePic'>生成朋友圈分享圖</button>、 這是觸發canvas的按鈕
繪製長按識別二維碼
settext: function (context) { let _this = this; var size = _this.setCanvasSize(); var text = "長按識別小程式"; context.setFontSize(12); context.setTextAlign("center"); context.setFillStyle("#000"); context.fillText(text, size.w / 2, size.h * 0.90); context.stroke(); },
繪製圖片
createNewImg: function () { var _this = this; var size = _this.setCanvasSize(); var context = wx.createCanvasContext('myCanvas'); var path = "/assets/images/qrshare1.jpg"; //測試的圖片 var imageQrCode = _this.data.filePath; //二維碼 context.drawImage(path, 0, 0, size.w, size.h); context.drawImage(imageQrCode, size.w / 2 - 55, size.h * 0.55, size.w * 0.33, size.w * 0.33); this.settext(context); //繪製圖片 context.draw(); //將生成好的圖片保存到本地,需要延遲一會,繪製期間耗時 wx.showToast({ title : '生成中...', icon : 'loading', duration: 2000 }); setTimeout(function () { wx.canvasToTempFilePath({ canvasId: 'myCanvas', success : function (res) { var tempFilePath = res.tempFilePath; _this.setData({ imagePath : tempFilePath, }); var img = _this.data.imagePath; let urls = [] urls.push(img, '二維碼路徑') //二維碼路徑是為了用戶也可以保存二維碼,分享到朋友圈有合成的圖片也有二維碼(參考拉鉤小程式分享) wx.previewImage({ current: img, // 當前顯示圖片的http鏈接 urls : urls // 需要預覽的圖片http鏈接列表 }) }, fail: function (res) { console.log(res); } }); }, 2000); },
本來我是直接繪製網路圖片的,但是在真機上,網路圖片不顯示!於是百度了一下,可以先下載,介面返回的圖片再繪製
//生成朋友圈圖片 createSharePic() { let _this = this, qrcode= _this.data.qrcode wx.downloadFile({ url : qrcode, success: function (res) { if (res.statusCode === 200) { _this.setData({ filePath: res.tempFilePath, }) _this.createNewImg(); } } }) }
問題出來了,本地上測試沒問題,遠程調試也沒問題,可以生成圖片保存到手機
納悶了一會之後,我發現自己沒有後臺添加download的下載功能變數名稱。因為平時在本地的都是勾選了不檢查功能變數名稱。所以在這納悶了很久!!!!!!!
總結:
小程式canvas不好控制,寫樣式時用rpx,canvas用px;
網路圖片不顯示(我用網路圖片時,是不顯示,不確定這個問題是我的操作問題還是小程式的限制,希望大佬們可以給我個肯定的結論)
要在微信後臺設置downloand下載功能變數名稱(我這裡用了下載後繪製的方法,如果大家有不用下載的方法,望告知!謝謝)