欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

微信小程序动态生成二维码的实现代码

程序员文章站 2023-02-08 19:39:24
效果图如下: 实现 wxml <...

效果图如下:

微信小程序动态生成二维码的实现代码

实现

wxml

<!-- 存放二维码的图片-->
<view class='container'>
  <image bindtap="previewimg" mode="scaletofill" src="{{imagepath}}"></image>
</view>
<!-- 画布,用来画二维码,只用来站位,不用来显示-->
<view class="canvas-box">
  <canvas hidden="{{canvashidden}}" style="width: 686rpx;height: 686rpx;background:#f1f1f1;" canvas-id="mycanvas" />
</view>

wxss

.container {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100%;
}
.container image {
  width: 686rpx;
  height: 686rpx;
  background-color: #f9f9f9;
}
.canvas-box {
  position: fixed;
  top: 999999rpx;
  left: 0;
}

js

var qr = require("../../../lib/qrcode.js");
page({
  /**
   * 页面的初始数据
   */
  data: {
    canvashidden: false,
    imagepath: '',
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onload: function(options) {
    //option为上个页面传递过来的参数
    var jiaoyancode = 'sorry,jiaoyancode is loss';
    if (options) {
      jiaoyancode = options.jiaoyancode;
    }
    console.log(jiaoyancode);
    var size = this.setcanvassize(); //动态设置画布大小 
    this.createqrcode(jiaoyancode, "mycanvas", size.w, size.h);   
  },
  //适配不同屏幕大小的canvas
  setcanvassize: function() {
    var size = {};
    try {
      var res = wx.getsysteminfosync();
      var scale = 750 / 686; //不同屏幕下canvas的适配比例;设计稿是750宽 686是因为样式wxss文件中设置的大小
      var width = res.windowwidth / scale;
      var height = width; //canvas画布为正方形
      size.w = width;
      size.h = height;
    } catch (e) {
      // do something when catch error
      console.log("获取设备信息失败" + e);
    }
    return size;
  },
  /**
   * 绘制二维码图片
   */
  createqrcode: function(url, canvasid, cavw, cavh) {
    //调用插件中的draw方法,绘制二维码图片
    qr.api.draw(url, canvasid, cavw, cavh);
    settimeout(() => {
      this.canvastotempimage();
    }, 1000);
  },
  /**
   * 获取临时缓存照片路径,存入data中
   */
  canvastotempimage: function() {
    var that = this;
    //把当前画布指定区域的内容导出生成指定大小的图片,并返回文件路径。
    wx.canvastotempfilepath({
      canvasid: 'mycanvas',
      success: function(res) {
        var tempfilepath = res.tempfilepath;
        console.log(tempfilepath);
        that.setdata({
          imagepath: tempfilepath,
          // canvashidden:true
        });
      },
      fail: function(res) {
        console.log(res);
      }
    });
  },
  /**
   * 点击图片进行预览
   */
  previewimg: function (e) {
    var img = this.data.imagepath;
    console.log(img);
    wx.previewimage({
      current: img, // 当前显示图片的http链接
      urls: [img] // 需要预览的图片http链接列表
    });
  },
})

qrcode.js 可以去 这里 下载。

详细源码请查看

总结

以上所述是小编给大家介绍的微信小程序动态生成二维码的实现代码,希望对大家有所帮助