由于微信的直接分享限制较多,改为利用canvas来做分享
花了一天多完成,几个知识点(坑)的记录
1,绘制二维码本来采用功能更丰富的weappQRcode.js,但h5端难以调通,
所以用的是wxqrcode.js,返回的是一个base64,7是url的规范等级
this.qr = wxqrcode.createQrCodeImg(7, window.location.href)
直接用绘图方法就能根据base64画出来
ctx.drawImage(this.qr, x,y,widt, height)
画出来后的分享功能,若是其他平台可以用uni.saveImageToPhotosAlbum直接转为图片
但H5端不可以,所以用uni.canvasToTempFilePath转为base64后,再写入img的src
uni.canvasToTempFilePath({ x: 0, y: 0, width: canvasInfo.width, height: finalHeight, destWidth: canvasInfo.width, destHeight: finalHeight, canvasId: 'shareCanvas', success: function(res) { that.canvasImg = res.tempFilePath }, })
文字换行,采用的是ctx.measureText拿到一个字的宽度,然后不断遍历计算,有点麻烦但基本解决需求
const oneTextWidth = ctx.measureText(‘一段文字’).width
还需要学习和优化的地方,canvas尺寸与屏幕尺寸之间的关系