效果图如下:

实现

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);       },//适配不同屏幕大小的canvassetCanvasSize: 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 errorconsole.log("获取设备信息失败" + e);}return size;},/*** 绘制二维码图片*/createQrCode: function(url, canvasId, cavW, cavH) {//调用插件中的draw方法,绘制二维码图片QR.api.draw(url, canvasId, cavW, cavH);setTimeout(() => {this.canvasToTempImage(canvasId);}, 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

PS:鉴于有个别网友私信反应还是出不来二维码图片,这里特地上传了一份源码。源码如下:https://download.csdn.net/download/She_lock/11982918
特别说明:这份源码和这篇文章分享的源码几乎一模一样,下载导入即可运行。能不下载自己调试就自己调试,省的还得花5积分。

微信小程序动态生成二维码相关推荐

  1. 微信小程序实现生成二维码功能并下载到本地

    微信小程序实现生成二维码功能并下载到本地 背景 实现 备注 背景 有这样一个需求,后台返回了url地址,微信小程序将url地址转成二维码图片,展示在页面上,并且该二维码图片可下载到用户手机相册中 实现 ...

  2. 转载:在微信小程序中 生成二维码

    目录 转载: weapp-qrcode-canvas-2d 仓库地址 测试环境 使用 安装方法1:直接引入 js 文件 安装方法2:npm安装 安装完成后调用 例子1:没有使用叠加图片 例子2:使用叠 ...

  3. 微信小程序之生成二维码

    首先先扯一些题外话,本人是java行业的小白,因为是改行做的java,之前的工作就不提了. 之前写过几篇随便,刚看了下,觉得比较low,就都删了,所以也算是进入java行业的第一篇随笔,如果有表述上或 ...

  4. 【微信小程序】生成二维码方式

    前言 基础库 2.12.0 开发者工具 1.03.2008270 生成二维码方式 微信小程序的二维码可分为: 微信生成的二维码 普通链接二维码 微信生成的二维码,是指调用微信小程序服务端接口 wxac ...

  5. vue H5页面跳转微信小程序以及生成二维码跳转小程序

    研究了两种H5跳转小程序的方法,同时携带参数 1. 手机浏览器打开H5页面,点击按钮拉起微信小程序 2. H5页面上生成小程序二维码,手机微信扫码跳转目标小程序 为了开发方便,以上两种均借助了微信小程 ...

  6. 如何在微信小程序中生成二维码:一个最简单的案例就让你明白

    使用weapp.qrcode.js 在 微信小程序 中,快速生成二维码 一.效果 二.具体步骤.代码 下载weapp-qrcode代码 然后 将 dist 目录下的weapp.qrcode.esm.j ...

  7. 微信小程序前端生成二维码并保存(海报同理)

    这里写自定义目录标题 1.前端生成二维码并保存 1.前端生成二维码并保存 1.下载weapp.qrcode.js文件并引入项目中 2.先在wxml文件中构建canvas画布 <canvas st ...

  8. 小程序动态生成二维码

    在项目中有一个使用二维码签到的需求,原理很简单,两个不同的账号登录,生成二维码一方向后台请求一个二维码信息的链接,签到的一方扫描二维码读取信息向后台请求校验.这里和后台对接的部分部件,原理已经说了,下 ...

  9. .net/C# 微信小程序如何生成二维码图片

    1.生成微信小程序二维码,需要获取微信小程序Access_Token.代码如下,先获取Access_Token /// <summary>/// 获取微信小程序Access_Token// ...

最新文章

  1. php is_null 判断,PHP判断null,别再=了,你真控制不住
  2. NHibernate3剖析:Query篇之NHibernate.Linq标准查询
  3. 内存拷贝函数的深入思考
  4. MySQL大表优化技术要点科普
  5. 扬尘监测系统_工地扬尘监测_工地扬尘监测解决方案
  6. 黑白两客进入页面(1)
  7. 同意按钮,倒计时10秒,同意按钮变为可提交的
  8. 限制python内存上限_13.14 限制内存和CPU的使用量
  9. Mac使用JMeter录制脚本
  10. 如何让自己每天按时睡觉
  11. 日语学习的实用网址大全!
  12. HTML输入密码函数,介绍一个输入密码用的InputBox函数
  13. 实验四 201421440038 徐凤娇
  14. 零电压开关(ZVS)电路原理与设计(整理)
  15. 小米机器人履带双轮平衡_小米米兔机器人评测:一个站在平衡车上的机器人
  16. Matlab的bsxfun函数
  17. 计算机网络 5电路交换
  18. 排序(基于Java语言编写)
  19. 三星android智能手图片机,掌中投影智能机 三星GALAXY Beam2图赏
  20. iPhone与小米的体验对比(一)

热门文章

  1. BI神器Power Query(1)-- 什么是PQ?
  2. 4.加载FeatureLayer
  3. 2.机器学习基础(一)
  4. htop 进程管理工具
  5. 火遍全国的网络热梗“yyds”,创造者被判刑 3 年
  6. 飞腾服务器如何查看cpu型号,飞腾cpu怎么样 飞腾cpu简介及对比评测【详解】
  7. 电子邮件客户端软件--foxmail(2)
  8. 第十五章 - 垃圾回收相关算法
  9. nacos项目启动失败[NA] failed to request
  10. 小学计算机打字比赛教案,打字比赛活动方案