赞
踩
工作中遇到的需求:用户上传相册中选中的图片,判断这个图片里的二维码是不是微信二维码,如果是则上传到服务器;不是,则提示用户重新上传。
百度了下,qrcode.js是一个用于生成二维码的 JavaScript 库。主要是通过获取 DOM 的标签,再通过 HTML5 Canvas 绘制而成,不依赖任何库。看了看文档,感觉好简单,从github 上下载了源码就开干了。github上下载的源码可以将 url 转成二维码,但是用 qrcode.decode
解析二维码图片时,一直提示 qrcode.decode is not a function
(如下图),也不会触发 callback 回调。
打印出 QRCode 实例,发现在原型链上确实没有 decode方法,只有 clear()、makeCode()、makeImage() 三个方法。
生成二维码用 qrcode.js
库,解析二维码用 reqrcode.js
库。
files
属性获取到图片的信息qrcode.decode()
解析二维码图片qrcode.callback = function (imgMsg){}
返回解析后的二维码地址打印出 input 的 files 属性如下图所示:
附上解析二维码的完整代码,demo的下载地址:https://download.csdn.net/download/Charissa2017/12676720
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1.0"> <title>解析二维码</title> <script src="reqrcode.js"></script> </head> <body> <input type="file" id="input"> <div id="text"></div> </body> <script> var inp = document.getElementById('input'); //获取预览图片路径 var getObjectURL = function (file) { let url = null; if (window.createObjectURL != undefined) { // basic url = window.createObjectURL(file); } else if (window.URL != undefined) { // mozilla(firefox) url = window.URL.createObjectURL(file); } else if (window.webkitURL != undefined) { // webkit or chrome url = window.webkitURL.createObjectURL(file); } return url; } inp.onchange = function () { // files[0]是通过input file上传的二维码图片文件 qrcode.decode(getObjectURL(this.files[0])); qrcode.callback = function (imgMsg) { //imgMsg 就是解析后的路径 document.getElementById('text').innerHTML = imgMsg; } } </script> </html>
可以在项目中直接使用 script 标签引入 qrcode.js 文件,或者使用 npm 安装 第三方插件包qrcode 。
var qrcode = new QRCode("box", {
text: "http://www.runoob.com", //要生成二维码的链接
width: 128, //二维码的宽度
height: 128, //二维码的高度
colorDark : "#00f", //前景色
colorLight : "#ffffff", //背景色
correctLevel : QRCode.CorrectLevel.H //生成二维码的标准
}
页面效果如下:
//box 为容器元素的id
var qrcode = new QRCode('box',{
width: 128,
height: 128,
colorDark : "#00f",
colorLight : "#ffffff",
correctLevel : QRCode.CorrectLevel.H
})
qrcode.makeCode("http://www.runoob.com")
参考资料:https://www.runoob.com/w3cnote/javascript-qrcodejs-library.html
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。