本文使用weapp.qrcode.js 在 微信小程序中,快速生成二维码,供大家参考:
插件地址(码云直通车):https://gitee.com/YuJian11/wxQRCode
使用说明:
先在 wxml 文件中,创建绘制的 canvas,并定义好 width, height, canvasId 。
<canvas style="width: 200px; height: 200px;" canvas-id="myQrcode"></canvas>
直接引入 js 文件,使用 drawQrcode() 绘制二维码。!!!在 调用 drawQrcode() 方法之前,一定要确保可以获取到 canvas context 。
// 将 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
}
})二、如果项目使用了 wepy 框架,可直接安装 weapp-qrcode npm包。
npm install weapp-qrcode --save import drawQrcode from 'weapp-qrcode'
调用方法
import drawQrcode from '@/utils/weapp.qrcode.min.js'
drawQrcode({
width: 200,
height: 200,
canvasId: 'myQrcode',
text: 'https://github.com/yingye'三、其他参数
width: 必须,二维码宽度,与canvas的width保持一致 200
height: 必须,二维码高度,与canvas的height保持一致 200
canvasId: 非必须,绘制的canvasId 'myQrcode'
ctx: 非必须,绘图上下文,可通过 wx.createCanvasContext('canvasId') 获取,v1.0.0+版本支持 'wx.createCanvasContext('canvasId')'
text: 必须,二维码内容 'https://github.com/yingye'
typeNumber: 非必须,二维码的计算模式,默认值-1 8
correctLevel: 非必须,二维码纠错级别,默认值为高级,取值:{ L: 1, M: 0, Q: 3, H: 2 } 1
background: 非必须,二维码背景颜色,默认值白色 '#ffffff'
foreground: 非必须,二维码前景色,默认值黑色 '#000000'
_this: 非必须,若在组件中使用,需要传入,v0.7.0+版本支持 this
callback: 非必须,绘制完成后的回调函数,v0.8.0+版本支持。安卓手机兼容性问题,可通过自行设置计时器来解决,更多可以参考 issue #18 function (e) { console.log('e', e) }
x: 非必须,二维码绘制的 x 轴起始位置,默认值0,v1.0.0+版本支持 100
y: 非必须,二维码绘制的 y 轴起始位置,默认值0,v1.0.0+版本支持 100
image: 非必须,在 canvas 上绘制图片,层级高于二维码,v1.0.0+版本支持,更多可参考drawImage { imageResource: '', dx: 0, dy: 0, dWidth: 100, dHeight: 100 }
四:wepy完整案例 qcode.wepy
<style lang="less"></style>
<config>
{
navigationBarTitleText: '在线生成二维码',
enablePullDownRefresh: false,
backgroundTextStyle: 'dark',
}
</config>
<template>
<view class="pagebody">
<canvas style="width: 200px; height: 200px; position: fixed; left: -2400px; top: -2400px;" canvas-id="myQrcode"></canvas>
<view class="qcode" v-if="qcode">
<image :src="qcode" class="qcodeImg"/>
</view>
</view>
</template>
<script>
import wepy from '@wepy/core'
import drawQrcode from '@/utils/weapp.qrcode.min.js'
const app = getApp()
wepy.page({
data: {
qcode: '',
text: '二维码内容',
},
async onLoad(options) {
// 创建二维码
this.createqcode();
},
async onShow(){
},
methods: {
// 生成二维码
async createqcode(){
var that = this
if(that.ctmMobile){
// 直接设置 options.image 的值,在手机上logo会绘制失败
new Promise((resolve, reject) => {
// 绘制网络地址的logo时需要先使用 wx.getImageInfo 获取到图片信息
// 注意网络图片需先配置download域名 wx.getImageInfo 才能生效。
wx.getImageInfo({
src: 'triage/qcodelogo.jpg',
success: (res) => {
resolve(res.path);
},
fail: (e) => {
// 获取logo失败也不应该影响正确生成二维码图片
// 这里可以给出失败提示
resolve();
}
})
}).then((path) => {
let options = {
width: 180,
height: 180,
x: 10,
y: 10,
canvasId: 'myQrcode',
text: that.text,
callback: (e) => {
// 使用 setTimeout, 避免部分安卓机转出来的二维码图片不完整
setTimeout(() => {
wx.canvasToTempFilePath({
canvasId: 'myQrcode',
x: 0,
y: 0,
width: 200,
height: 200,
success: (e) => {
console.log(e.tempFilePath)
that.qcode = e.tempFilePath
},
})
}, 0);
}
}
if(!!path){
options.image = {
imageResource: path,
dx: 70,
dy: 70,
dWidth: 60,
dHeight: 60
}
}
drawQrcode(options);
})
}
},
}
})
</script>
关于简忆
简忆诞生的故事



粤ICP备16092285号
文章评论(0)