5分钟实现微信小程序绘制二维码

Posted 北极光之夜。

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了5分钟实现微信小程序绘制二维码相关的知识,希望对你有一定的参考价值。

一.话不多,直接先看效果:

    🌷🌷🌷 hello呀,大家,真是好久不见。在我们日常生活中,经常使用微信小程序亮健康码,那么就好奇前端怎么实现的,其实也并不难,下面5分钟带你快速实现~ 本文效果是 绘制出二维码,且5秒时间到后自动刷新。如下(可自己美化样式呦):

二.详细实现:

1. 安装插件:

二维码的绘制主要靠 weapp-qrcode-canvas-2d 这个插件完成,到终端安装插件并构建npm:

npm install weapp-qrcode-canvas-2d --save

然后在 js 文件导入:

import drawQrcode from 'weapp-qrcode-canvas-2d'

2. 先定义基本标签:

<!--index.wxml-->
<view class="container">
<!-- 展示二维码插件的标签(必须) -->
  <canvas type="2d" style="width: 350rpx; height: 350rpx;" id="myQrcode"></canvas>
  <!-- 倒计时标签 -->
  <view class="refresh">
  <!-- 时间通过变量countDown变化 -->
      <text style="color:rgb(79, 181, 253);">countDowns</text>
      <text>后自动刷新</text>
    </view>
</view>

3. 开始js逻辑书写,先定义变量:

  data: 
    interval: null, //定时器
    countDown: 5,//刷新倒计时,
  ,

4. 开始书写方法,先写绘制二维码的方法,详细看注释:

固定写法,可以直接复制用,改个把参数的值便好:

  //绘制二维码
  draw() 
    //设置text为二维码码值,一般通过接口获取后赋值
      let text = '123123' + Math.random(0,100);
   //设置倒计时为5秒
      this.setData(
        countDown: 5,
      )
      const query = wx.createSelectorQuery()
      let that = this
      query.select('#myQrcode')
        .fields(
          node: true,
          size: true
        )
        .exec(async (res) => 
          let canvas = res[0].node
          var img = canvas.createImage();
          //二维码中间那个小logo的地址
         img.src = 'https://profile.csdnimg.cn/D/5/5/1_luo1831251387'
          img.onload = function () 
            // img.onload完成后才能调用 drawQrcode方法
            var options = 
              canvas: canvas,
              canvasId: 'myQrcode',
              width: 350, 
              padding: 30,
              paddingColor: '#fff',
              background: '#fff',
              foreground:'rgb(0, 178, 106)' ,
              //值
              text: text,
              image: 
                imageResource: img,
                width: 70, // logo图片大小 建议不要设置过大,以免影响扫码
                height: 70, // 建议不要设置过大,以免影响扫码
                round: true // Logo图片是否为圆形
              
            
            drawQrcode(options)
            // 获取临时路径(得到之后,想干嘛就干嘛了)
            wx.canvasToTempFilePath(
              x: 0,
              y: 0,
              width: 350,
              height: 350,
              destWidth: 600,
              destHeight: 600,
              canvasId: 'myQrcode',
              canvas: canvas,
              success(res) 
                console.log('二维码临时路径为:', res.tempFilePath)
              ,
              fail(res) 
                console.error(res)
              
            )
          ;
        )
  ,

5. 实现定时后刷新二维码,详细看注释:

  //倒计时刷新
  countDown() 
    if (this.data.countDown == 0) 
      this.draw()
      return;
    
    let now = this.data.countDown - 1;
    this.setData(
      countDown: now
    )
  ,

6. 最后,一进页面就调用绘制与倒计时方法:

  onLoad: function (options) 
    //计算时间
    this.setData(
      interval: setInterval(() => 
        this.countDown();
      , 1000),
    )
  ,

…以上便是实现的全过程啦,是5分钟左右把~

三.完整代码:

完整js文件代码:

// index.js
// 获取应用实例
//npm install weapp-qrcode-canvas-2d --save


const app = getApp()

import drawQrcode from 'weapp-qrcode-canvas-2d'

Page(
  /**
   * 页面的初始数据
   */
  data: 
    interval: null, //定时器
    countDown: 5,//刷新倒计时,
  ,
  //倒计时刷新
  countDown() 
    if (this.data.countDown == 0) 
      this.draw()
      return;
    
    let now = this.data.countDown - 1;
    this.setData(
      countDown: now
    )
  ,
  //绘制二维码
  draw() 
    //设置text为二维码码值,一般通过接口获取后赋值
      let text = '123123' + Math.random(0,100);
   //设置倒计时为5秒
      this.setData(
        countDown: 5,
      )
      const query = wx.createSelectorQuery()
      let that = this
      query.select('#myQrcode')
        .fields(
          node: true,
          size: true
        )
        .exec(async (res) => 
          let canvas = res[0].node
          var img = canvas.createImage();
          //二维码中间那个小logo的地址
         img.src = 'https://profile.csdnimg.cn/D/5/5/1_luo1831251387'
          img.onload = function () 
            // img.onload完成后才能调用 drawQrcode方法
            var options = 
              canvas: canvas,
              canvasId: 'myQrcode',
              width: 350, 
              padding: 30,
              paddingColor: '#fff',
              background: '#fff',
              foreground:'rgb(0, 178, 106)' ,
              //值
              text: text,
              image: 
                imageResource: img,
                width: 70, // logo图片大小 建议不要设置过大,以免影响扫码
                height: 70, // 建议不要设置过大,以免影响扫码
                round: true // Logo图片是否为圆形
              
            
            drawQrcode(options)
            // 获取临时路径(得到之后,想干嘛就干嘛了)
            wx.canvasToTempFilePath(
              x: 0,
              y: 0,
              width: 350,
              height: 350,
              destWidth: 600,
              destHeight: 600,
              canvasId: 'myQrcode',
              canvas: canvas,
              success(res) 
                console.log('二维码临时路径为:', res.tempFilePath)
              ,
              fail(res) 
                console.error(res)
              
            )
          ;
        )
  ,


  onLoad: function (options) 
    //计算时间
    this.setData(
      interval: setInterval(() => 
        this.countDown();
      , 1000),
    )





  ,

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () 

  ,

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () 



    this.draw()
  ,

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () 

  ,

  /**
   * 生命周期函数--监听页面卸载
   */

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () 

  ,

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () 

  ,

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () 

  
)

四.总结:

😆😆😆
那么,下次见了,溜了溜了~

我的哔哩哔哩空间
Gitee仓库地址:全部特效源码
其它文章:
~关注我看更多简单创意特效:
文字烟雾效果 html+css+js
环绕倒影加载特效 html+css
气泡浮动背景特效 html+css
简约时钟特效 html+css+js
赛博朋克风格按钮 html+css
仿网易云官网轮播图 html+css+js
水波加载动画 html+css
导航栏滚动渐变效果 html+css+js
书本翻页 html+css
3D立体相册 html+css
霓虹灯绘画板效果 html+css+js
记一些css属性总结(一)
Sass总结笔记
…等等
进我主页看更多~

以上是关于5分钟实现微信小程序绘制二维码的主要内容,如果未能解决你的问题,请参考以下文章

5分钟实现微信小程序绘制二维码

微信小程序绘制二维码(附微信小程序开发学习手册)

微信小程序绘制二维码(附微信小程序开发学习手册)

微信小程序绘制二维码(附微信小程序开发学习手册)

微信小程序绘制二维码(附微信小程序开发学习手册)

Java生成微信小程序二维码,5种实现方式,一个比一个简单