需求场景:

小程序中指定页面需要根据列表数据生成多张二维码。

实现方案:

鉴于需要生成多张二维码,可以将生成二维码的功能封装到组件中,直接在页面列表循环中调用就好了。也可以给组件添加slot,在页面调用时写入需要跟二维码组件绑定在一起进行显示的内容。

技术难点:

微信小程序并没有提供官方二维码生成功能魔抗,所以这个就只能自己去找插件实现了。对于网上的插件,有很大一部分都是根据qrcode.js改进的。

对于插件的选择并不是很顺利,第一次选定了weapp-qrcode这个插件,本来开发测试都好好的,到了同事的华为v10上,就会出现间隔性不显示的问题(两个页面之间切换,有时候会不显示二维码),这个问题已经在git上提了Issues,并被作者标记为bug。

后边又找到另一个插件weapp-qrcode-base64,经反复测试验证,这个插件可以正常使用,已经将这个功能做了个小程序片段,详见:小程序二维码生成组件

组件代码:

components/qrcode/index.js

// components/myComponent.js
const QR = require('./weapp-qrcode.js')
const rpx2px = wx.getSystemInfoSync().windowWidth / 750
Component({
options: {
multipleSlots: true // 在组件定义时的选项中启用多slot支持
},
properties: {
value: String, //二维码内容
width: String, //二维码宽度(默认长宽相等)
},
data: {
qrcodeURL: ''
},
ready: function() {
var imgData = QR.drawImg(this.data.value, {
typeNumber: 3,//码点大小 1-40,数字越大,码点越小,二维码会显得越密集
errorCorrectLevel: 'H',//纠错等级 H等级最高(30%) 简单来说,就是二维码被覆盖了多少仍然能被识别出来 详见qrcode.js
size: parseInt(rpx2px * this.data.width)
})
this.setData({
qrcodeURL: imgData
})
},
methods: {
/**
* 长按保存图片
*/
save: function() {
var self = this
var aa = wx.getFileSystemManager(),
filePath = wx.env.USER_DATA_PATH + '/qrcode_' + self.data.value + '.png';
//写入临时文件
aa.writeFile({
filePath: filePath,
data: self.data.qrcodeURL.slice(22),
encoding: 'base64',
success: res => {
//保存临时文件到手机相册中去
wx.saveImageToPhotosAlbum({
filePath: filePath,
success: function(res) {
wx.showToast({
title: '保存成功',
})
},
fail: function(err) {
console.log(err)
}
})
console.log(res)
},
fail: err => {
console.log(err)
}
})
}
}
})

components/qrcode/index.wxml

<view class='qrcode'>
<image src="{{qrcodeURL}}" bindlongpress='save' style="width:{{width}}rpx; height:{{width}}rpx;margin:0 auto;"> </image>
<slot name="text"></slot>
</view>

页面引用:

pages/index/index.js

Page({
data: {
textArr: [
"11111111",
"00000000",
"7539514682492"
]
},
onLoad: function() { }
})

pages/index/index.wxml

<view wx:for="{{textArr}}">
<qrcode class="iblock" value="{{item}}" width="440">
<view slot="text">
{{item}}
</view>
</qrcode>
</view>

上边组件可以点击小程序二维码生成组件导入到微信开发者工具中进行查看。

微信小程序开发——使用第三方插件生成二维码的更多相关文章

  1. mac版微信web开发者工具(小程序开发工具)无法显示二维码 解决方案

    微信小程序概念的提出,绝对可以算得上中国IT界惊天动地的一件大事,这可能意味着一场新的开发热潮即将到来, 我也怀着激动的心情准备全身心投入其中,不过截止目前,在官方网站上下载的最新版本都无法使用,打开 ...

  2. 【转】mac版微信web开发者工具(小程序开发工具)无法显示二维码 解决方案

    转自:https://www.cnblogs.com/stevenluo/p/6030445.html   微信小程序概念的提出,绝对可以算得上中国IT界惊天动地的一件大事,这可能意味着一场新的开发热 ...

  3. java、python、golang等开发语言如何快速生成二维码?

    免费二维码生成途径非常多!比如比较有名的草料二维码,如果只是简单的使用,用它就足够了.但是如果想大规模的生成,那就不太合适了.再者很多工具都没办法在二维码中加入logo(像微信二维码一样). 接下来, ...

  4. 微信小程序开发工具使用与设计规范(二)

    [未经作者本人同意,请勿以任何形式转载] 上一篇文章主要分析了微信小程序应用场景和优劣势.本篇你可以学习到: 如何使用小程序开发工具写一个Hello World 微信小程序设计规范 微信小程序项目结构 ...

  5. 自己开发chrome插件生成二维码

    摘要: 最近在开发微信项目时,需要在微信调试,所以经常会在微信中输入本地服务地址,输入起来特别麻烦,所以自己就想了想微信中的扫一扫,然后开发了这款chrome插件,将当前url生成二维码,用微信扫一扫 ...

  6. C#通过第三方组件生成二维码(QR Code)和条形码(Bar Code)

    用C#如何生成二维码,我们可以通过现有的第三方dll直接来实现,下面列出几种不同的生成方法: 1):通过QrCodeNet(Gma.QrCodeNet.Encoding.dll)来实现 1.1):首先 ...

  7. qrcode插件生成二维码

    <!DOCTYPE html> <html> <head> <meta name="viewport" content="wid ...

  8. 使用Python第三方库生成二维码

    本文主要介绍两个可用于生成二维码的Python第三方库:MyQR和qrcode. MyQR的使用: 安装: pip install MyQR 导入: from MyQR import myqr imp ...

  9. h5开发app之在线生成二维码

    h5通过jquery和qrcode在线生成二维码 首先我们需要下载一个qrcode.js文件,然后依次引入jquery和qrcode文件. 1.创建一个输入框以便做演示使用: <input id ...

随机推荐

  1. Python 多线程爬取站酷(zcool.com.cn)图片

    极速爬取下载站酷(https://www.zcool.com.cn/)设计师/用户上传的全部照片/插画等图片. 项目地址:https://github.com/lonsty/scraper 特点: 极 ...

  2. windows10 进入BIOS

    windows10开机进入不了BIOS 原因 上网查了电脑固件所应该有的进入键,什么F1.F2.F12.Delete以及什么要配置Fn+F1...等等方法就是开机进入不了BIOS. 解决办法 最后发现 ...

  3. Gtest:死亡测试

    转自:玩转Google开源C++单元测试框架Google Test系列(gtest)之五 - 死亡测试 一.前言 “死亡测试”名字比较恐怖,这里的“死亡”指的的是程序的崩溃.通常在测试过程中,我们需要 ...

  4. opencv图像阈值操作

    使用threshold方法和adaptivethreshold方法对图像进行阈值分割操作. 1.使用threshold方法,设置一个阈值,将大于阈值的值变换为最大值,小于阈值的值变换为0. #-*- ...

  5. Cloudera Certified Associate Administrator案例之Test篇

    Cloudera Certified Associate Administrator案例之Test篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.准备工作(将CM升级到&qu ...

  6. 构建之法——beta版本

    一.开头☀️ 这个作业属于哪个课程 课程链接 这个作业要求在哪里 要求链接 团队名称 Running Man 这个作业的目标 完成团队的Beta版本项目 二.时间任务安排☀️ 时间安排: 冲刺总时间为 ...

  7. 使用Xpath+多进程爬取诗词名句网的史书典籍类所有文章。update~

    上次写了爬取这个网站的程序,有一些地方不完善,而且爬取速度较慢,今天完善一下并开启多进程爬取,速度就像坐火箭.. # 需要的库 from lxml import etree import reques ...

  8. python+BeautifulSoup+多进程爬取糗事百科图片

    用到的库: import requests import os from bs4 import BeautifulSoup import time from multiprocessing impor ...

  9. js插件---videojs中文文档详解

    js插件---videojs中文文档详解 一.总结 一句话总结: js插件网上都有很多参考资料,使用起来也非常简单 二.lavarel中使用实例 <video id="example_ ...

  10. springboot的第一节课

    快速开始spring boot应用 官方向导搭建boot应用 地址:http://start.spring.io/ 设置项目属性: 3.解压,拷贝到工作空间,导入maven项目 4.写Controll ...