微信小程序开发——使用第三方插件生成二维码
需求场景:
小程序中指定页面需要根据列表数据生成多张二维码。
实现方案:
鉴于需要生成多张二维码,可以将生成二维码的功能封装到组件中,直接在页面列表循环中调用就好了。也可以给组件添加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>
上边组件可以点击小程序二维码生成组件导入到微信开发者工具中进行查看。
微信小程序开发——使用第三方插件生成二维码的更多相关文章
- mac版微信web开发者工具(小程序开发工具)无法显示二维码 解决方案
微信小程序概念的提出,绝对可以算得上中国IT界惊天动地的一件大事,这可能意味着一场新的开发热潮即将到来, 我也怀着激动的心情准备全身心投入其中,不过截止目前,在官方网站上下载的最新版本都无法使用,打开 ...
- 【转】mac版微信web开发者工具(小程序开发工具)无法显示二维码 解决方案
转自:https://www.cnblogs.com/stevenluo/p/6030445.html 微信小程序概念的提出,绝对可以算得上中国IT界惊天动地的一件大事,这可能意味着一场新的开发热 ...
- java、python、golang等开发语言如何快速生成二维码?
免费二维码生成途径非常多!比如比较有名的草料二维码,如果只是简单的使用,用它就足够了.但是如果想大规模的生成,那就不太合适了.再者很多工具都没办法在二维码中加入logo(像微信二维码一样). 接下来, ...
- 微信小程序开发工具使用与设计规范(二)
[未经作者本人同意,请勿以任何形式转载] 上一篇文章主要分析了微信小程序应用场景和优劣势.本篇你可以学习到: 如何使用小程序开发工具写一个Hello World 微信小程序设计规范 微信小程序项目结构 ...
- 自己开发chrome插件生成二维码
摘要: 最近在开发微信项目时,需要在微信调试,所以经常会在微信中输入本地服务地址,输入起来特别麻烦,所以自己就想了想微信中的扫一扫,然后开发了这款chrome插件,将当前url生成二维码,用微信扫一扫 ...
- C#通过第三方组件生成二维码(QR Code)和条形码(Bar Code)
用C#如何生成二维码,我们可以通过现有的第三方dll直接来实现,下面列出几种不同的生成方法: 1):通过QrCodeNet(Gma.QrCodeNet.Encoding.dll)来实现 1.1):首先 ...
- qrcode插件生成二维码
<!DOCTYPE html> <html> <head> <meta name="viewport" content="wid ...
- 使用Python第三方库生成二维码
本文主要介绍两个可用于生成二维码的Python第三方库:MyQR和qrcode. MyQR的使用: 安装: pip install MyQR 导入: from MyQR import myqr imp ...
- h5开发app之在线生成二维码
h5通过jquery和qrcode在线生成二维码 首先我们需要下载一个qrcode.js文件,然后依次引入jquery和qrcode文件. 1.创建一个输入框以便做演示使用: <input id ...
随机推荐
- IDEA整合SVN遇到的坑
1.安装SVN客户端 注意客户端版本与汉化插件的版本匹配问题,否则汉化无效 2.安装客户端时第二项默认不安装记得要手动选择为安装,否则不会生成svn.exe,这个文件会在IDEA中配置 3.安装客 ...
- Web开发之跨域问题
最近在工作上遇到了跨域方面的问题,借此温习巩固. 跨域是受到浏览器的同源策略引起的,为了防止某些文档或脚本加载别的域下的未知内容造成泄露隐私,破坏系统等安全行为. 那什么是同源的呢? 同源是指:应用协 ...
- Order by 默认排序方式
--ORDER BY 默认排序方式为升序ASC:SELECT * FROM [TABLE_NAME] ORDER BY [COLUMN_NAME] ESC;--升序DESC:SELECT * FROM ...
- Kubectl Rollout 回滚及Autoscale自动扩容
Kubectl Rollout 回滚及Autoscale自动扩容 Kubernetes 中采用ReplicaSet(简称RS)来管理Pod.如果当前集群中的Pod实例数少于目标值,RS 会拉起新的Po ...
- ubuntu 下 VNC Viewer 通过网线连接树莓派的网络设置
1 本机环境 Ubuntu 19.10 Raspberry 3B+ (Raspbian.开启了 vnc 服务) 2 Ubuntu 网络设置 1. Identity 下选择 Mac Address(如: ...
- python内建模块发起HTTP(S)请求
一.Python2 httplib 简介:httplib实现了HTTP和HTTPS的客户端协议,一般不直接使用,在python更高层的封装模块中(urllib,urllib2)使用了它的http实现. ...
- Python基础->for循环、字符串以及元组
python流程控制>for循环.字符串以及元组 学习有关序列的思想.序列:一组有顺序的东西.所有的序列都是由元素组成的,序列中的元素位置是从0开始编号的,最后一个元素的位置是它长度减一. fo ...
- Linux——自定义服务命令
前言 这个写部署禅道的时候包含了这个内容,但是今天弄的时候突然忘记了,所以还是重新写下. 步骤 有的同学可能会不知道一些系统自带的目录是什么意思,所以我这里就拆分下,不直接创建 进入到系统服务目录 c ...
- janusgraph-图数据库的学习(2)
janusgraph的简单使用 当安装好以后简单的使用janusgraph 1.进入janusgraph的shell命令界面 [root@had214 janusgraph-0.3.1-hadoop2 ...
- UVa11542Squre——异或方程组&&高斯消元法
题意 给出 $n$ 个整数,从中选出1个或多个,使得选出的整数乘积是完全平方数.一共有多少种选法?($1 \leq n \leq 100$,$1 \leq a_i \leq 10^{15}$ 且不含大 ...