uni用canvas绘制H5端的分享功能

由于微信的直接分享限制较多,改为利用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尺寸与屏幕尺寸之间的关系

上一篇:H5多图上传调研


下一篇:小左的H5标签和常用样式笔记