当前位置: 主页 > 建站知识 > 小程序

微信小程序如何生成二维码-一键免费生成微信小程序

发布时间:2023-01-30 16:05   浏览次数:次   作者:佚名

这是我参加11月更新挑战的第8天。 详情请查看:2021年最后更新挑战

QQ图片20211117114739.png

如图所示,我们要实现一个学生二维码页面,在其他页面扫码搜索对应的学生。 一起来看看吧~

1.wxml

页面布局如下,重点关注canvas的width、height和canvasId。

class="bg-black">
    <view class="inner">
        <view class="d-fx message">
            <view class="photoContainer">
                <image src="{{photoUrl}}" wx:if="{{photoUrl}}" mode="aspectFill">image>
            view>
            <view class="right">
                <view class="fs16 txt-overflow widClass">
                    张三<van-icon class="icon iconfont iconnv" wx:if="{{userInfo.gender == 1}}">
                    van-icon>
                    <van-icon class="icon iconfont iconnan" wx:if="{{userInfo.gender == 0}}">van-icon>
                view>
                <text class="fs10 black-45 txt-overflow widClass">{{userInfo.className}}text>
            view>
        view>
        <image src="{{qrcodeImgStore}}" wx:if="{{qrcodeImgStore}}" mode="aspectFill"
            style="width: 400rpx; height: 400rpx;">image>
        <canvas style="width: 400rpx; height: 400rpx;" canvas-id="myQrcode" wx:else>canvas>
    view>

微信小程序二维码_一键免费生成微信小程序_微信小程序如何生成二维码

<view class="bottom-text" bindtap="refreshCode"> <van-icon name="replay" /> 点击刷新二维码 view>
复制代码

2.js2.1引入weapp.qrcode.min.js,

可以在这里下载

2.2 drawQrcode方法

text:二维码的内容,必须设置。 内容决定了生成二维码的复杂程度。

image:在canvas上画图,级别比二维码高。 其中,图片必须先在小程序中下载,然后才能使用。 这里必须配置域名以保证图片显示。 因为我们项目中使用的是阿里云服务器。 域名不唯一,所以中间的图先去掉,需要的同学可以自行添加。

2.3 二维码转图片

由于二维码的内容是学生的学号微信小程序如何生成二维码,而学号是唯一的,所以第一次生成二维码后,将二维码转为图片(wx.canvasToTempFilePath),并保存到缓存中. 下次直接显示图片,避免资源浪费。 同时,刷新功能也被移除。

具体代码如下,大家可以参考:

import drawQrcode from '../../../../utils/weapp.qrcode.min.js';
import Store from '../../../../utils/store.js'
Page({
    /**
     * 页面的初始数据
     */
    data: {
        userInfo: '',
        photoUrl: '',

微信小程序如何生成二维码_一键免费生成微信小程序_微信小程序二维码

year: '', className: '', path: '', // 头像的路径 qrcodeImg: '', // 二维码图片 qrcodeImgStore: '', // 图片路径 }, // 生成学生二维码 drawCode() { let winWidth = 750; wx.getSystemInfo({ success: (result) => { winWidth = result.windowWidth; }, }) let info = { userNum: this.data.userInfo && this.data.userInfo.userNum, tid: this.data.userInfo && this.data.userInfo.tid, } let options = { width: 405 / 750 * winWidth, height: 200, canvasId: 'myQrcode', text: JSON.stringify(info), // 二维码内容

一键免费生成微信小程序_微信小程序二维码_微信小程序如何生成二维码

callback: (e) => { this.setData({ qrcodeImg: e.tempFilePath, }); // 使用 setTimeout, 避免部分安卓机转出来的二维码图片不完整 setTimeout(() => { wx.canvasToTempFilePath({ canvasId: 'myQrcode', x: 0, y: 0, width: 200, height: 200, success: (e) => { this.setData({ qrcodeImgStore: e.tempFilePath, }); Store.setStorage("qrcodeImgStore", e.tempFilePath); } }) }, 0); } } // 二维码中间的图片

微信小程序如何生成二维码_微信小程序二维码_一键免费生成微信小程序

if (!!this.data.path) { options.image = { imageResource: this.data.path, dx: 70, dy: 70, dWidth: 60, dHeight: 60 } } drawQrcode(options); }, // 刷新二维码 refreshCode() { this.drawCode(); }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { this.setData({ userInfo: Store.getStorage('userInfo'), qrcodeImgStore: Store.getStorage("qrcodeImgStore")

一键免费生成微信小程序_微信小程序如何生成二维码_微信小程序二维码

}) if (!!this.data.qrcodeImgStore) { this.drawCode(); } }, }) 复制代码

3.扫描二维码查看学生

// 扫描功能
scanCode() {
    wx.scanCode({
        scanType: [],
        success: (res) => {
            this.setData({
                value3: res.result && JSON.parse(res.result).userNum
            })
            this.getList();
        },
        fail: (res) => {},
        complete: (res) => {},
    })
},
复制代码

以上就是二维码的生成。 是不是很简单? 一开始UI图中间有个头像,在开发工具里可以正常显示。 后来微信小程序如何生成二维码,手机上的二维码就无法显示了。 知道为什么了,但是最后发现配置图片是合法的域名,但是我们项目的域名不统一,所以后面会去掉,因为上面还有一张学生头像左角。 记录下来。