此例子可以生成二维码,但有问题就是安卓有兼容性(可以加延时器解决),但是目前是我见过最好使的了
Github 上面有代码案例,可以适用于多端
github链接 https://github.com/yingye/weapp-qrcode#readme
// 将 dist 目录下,weapp.qrcode.esm.js 复制到项目目录中
import drawQrcode from '../../utils/weapp.qrcode.esm.js'
drawQrcode({
width: 200,
height: 200,
canvasId: 'myQrcode',
// ctx: wx.createCanvasContext('myQrcode'),
text: 'https://github.com/yingye',
// v1.0.0+版本支持在二维码上绘制图片
image: {
imageResource: '../../images/icon.png',
dx: 70,
dy: 70,
dWidth: 60,
dHeight: 60
}
})
**typeNumber 这个是用来控制码字符长度的,默认的就可以了(支持长的字符转二维码)
考虑安卓的兼容性目前我是这样用的,我没有用canvans生成的二维码,因为安卓会出现不显示的情况转了图片的目前还没发现问题
**`
drawQrcode({//画二维码
width: 400/rate,
height: 400/rate,
canvasId: 'myQrcode',
text: text,
// v1.0.0+版本支持在二维码上绘制图片
image: {
imageResource: '/static/images/scan2.png',
dx: 175/rate,
dy: 175/rate,
dWidth: 50/rate,
dHeight: 50/rate
},
callback(e) {
console.log('e: ', e)
}
})
setTimeout(()=>{
wx.canvasToTempFilePath({
canvasId: 'myQrcode',
success(res) {
that.setData({
ewmpath:res.tempFilePath
})
}
})},1000)
**如果需要保存相册,可以用下面的代码**
wx.saveImageToPhotosAlbum({
filePath: that.data.ewmpath,
success: function (res) {
setTimeout(function () {
wx.showToast({
title: '获取二维码成功,并保存至相册。该码有效期为100秒,请及时完成付款操作!',
icon: 'none',
duration: 3000
})
}, 1000)
},
fail:function(res){
// that.openConfirm();
wx.showModal({
title: '申请相册权限',
content: '您尚未开启相册权限,请在右上角“···”-“设置”允许使用相册权限',
showCancel:false,
confirmColor: '#1A84F7',
success(res) {
if (res.confirm) {
} else if (res.cancel) {
}
}
})
}
});
//拒绝相册权限的处理
openConfirm: function () {
wx.showModal({
content: '检测到您没打开相册权限,是否去设置打开?',
confirmText: "确认",
cancelText: "取消",
success: function (res) {
console.log(res);
//点击“确认”时打开设置页面
if (res.confirm) {
console.log('用户点击确认')
wx.openSetting({
success: (res) => { }
})
} else {
console.log('用户点击取消')
}
}
});
},