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


Posted in Javascript onJuly 25, 2018

效果图如下:

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

实现

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 可以去 这里 下载。

详细源码请查看 https://github.com/demi520/wxapp-qrcode

总结

以上所述是小编给大家介绍的微信小程序动态生成二维码的实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
Javascript中的var_dump函数实现代码
Sep 07 Javascript
浅谈javascript 面向对象编程
Oct 28 Javascript
myEvent.js javascript跨浏览器事件框架
Oct 24 Javascript
editable.js 基于jquery的表格的编辑插件
Oct 24 Javascript
JavaScript常用对象的方法和属性小结
Jan 24 Javascript
关于jQuery参考实例 1.0 jQuery的哲学
Apr 07 Javascript
可插入图片的TEXT文本框
Dec 27 Javascript
不用一句js代码初始化组件
Jan 27 Javascript
获取JS中网页各种高宽与位置的方法总结
Jul 27 Javascript
关于Jquery中的bind(),on()绑定事件方式总结
Oct 26 Javascript
JavaScript手风琴页面制作
May 17 Javascript
浅谈Vue使用Cascader级联选择器数据回显中的坑
Oct 31 Javascript
JavaScript设计模式之装饰者模式定义与应用示例
Jul 25 #Javascript
JavaScript实现的文本框placeholder提示文字功能示例
Jul 25 #Javascript
Bootstrap Fileinput 4.4.7文件上传实例详解
Jul 25 #Javascript
JavaScript简单实现关键字文本搜索高亮显示功能示例
Jul 25 #Javascript
微信小程序实现指定显示行数多余文字去掉用省略号代替
Jul 25 #Javascript
JavaScript对象的浅拷贝与深拷贝实例分析
Jul 25 #Javascript
Vue与Node.js通过socket.io通信的示例代码
Jul 25 #Javascript
You might like
利用discuz自带通行证整合dedecms的方法以及文件下载
2007/03/06 PHP
php+mysqli实现将数据库中一张表信息打印到表格里的方法
2015/01/28 PHP
php数组合并与拆分实例分析
2015/06/12 PHP
php+html5基于websocket实现聊天室的方法
2015/07/17 PHP
Yii2第三方类库插件Imagine的安装和使用
2017/07/06 PHP
用js+xml自动生成表格的东西
2006/12/21 Javascript
手把手教你自己写一个js表单验证框架的方法
2010/09/14 Javascript
javascript使用定时函数实现跳转到某个页面
2013/12/25 Javascript
Js表格万条数据瞬间加载实现代码
2014/02/20 Javascript
深入了解Node.js中的一些特性
2014/09/25 Javascript
Javascript获取表单名称(name)的方法
2015/04/02 Javascript
AngularJs Managing Service Dependencies详解
2016/09/02 Javascript
JavaScript实现审核流程状态的动态显示进度条
2017/03/15 Javascript
微信小程序之页面拦截器的示例代码
2017/09/07 Javascript
javascript数据结构之多叉树经典操作示例【创建、添加、遍历、移除等】
2018/08/01 Javascript
在Create React App中使用CSS Modules的方法示例
2019/01/15 Javascript
对vuex中getters计算过滤操作详解
2019/11/06 Javascript
VUE实时监听元素距离顶部高度的操作
2020/07/29 Javascript
小程序自定义弹框效果
2020/11/16 Javascript
[14:51]DOTA2 HEROS教学视频教你分分钟做大人-卓尔游侠
2014/06/13 DOTA
Python字符串和字典相关操作的实例详解
2017/09/23 Python
Python登录并获取CSDN博客所有文章列表代码实例
2017/12/28 Python
python使用zip将list转为json的方法
2018/12/31 Python
Python调用百度OCR实现图片文字识别的示例代码
2020/07/17 Python
Steve Madden官网:美国鞋类品牌
2017/01/29 全球购物
美国一家主打母婴用品的团购网站:zulily
2017/09/19 全球购物
英国床和浴室商场:Bed & Bath Emporium
2018/05/20 全球购物
电子商务专业求职信
2014/03/08 职场文书
人力资源职位说明书
2014/07/29 职场文书
给老师的感谢信
2015/01/20 职场文书
三十年同学聚会致辞
2015/07/28 职场文书
《秋思》教学反思
2016/02/23 职场文书
市场营销计划书
2019/04/24 职场文书
python3实现无权最短路径的方法
2021/05/12 Python
详解MySQL连接挂死的原因
2021/05/18 MySQL
端午节将至,用Python爬取粽子数据并可视化,看看网友喜欢哪种粽子吧!
2021/06/11 Python