Vue 实现 上传图片 二维码识别 + 条形码识别(qrcode-decoder插件)
vue
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
项目地址:https://gitcode.com/gh_mirrors/vu/vue
免费下载资源
·
需求
1.web端H5 实现 上传图片 自动识别二维码内容
2.具体业务 比如 上传电影票 自动识别取票码或者其他的二维码上传(主要是为增加用户体验)
二维码(插件):
1.使用Npm安装qrcode-decoder
npm i qrcode-decoder --registry=https://registry.npm.taobao.org
2.创建一个方法 qrcode.js
// 引入qrcode-decoder,
// import QrCode from 'qrcode-decoder'
// 部分网友反应上面的引入,这个引入的是一个空对象,不能使用,已经给开发者提issues了,希望能尽快修复不能使用或报错,可以试试下面这种
import QrCode from '../../../../../node_modules/qrcode-decoder/dist/index';
// 传入file对象,返回promise
export function getQrUrl(file) {
//使用这个方法或者下面被注释的方法设置浏览器读取文件方式,chrome和ie有效,其他浏览器没测试
const URi = window.webkitURL.createObjectURL(file) || window.URL.createObjectURL(file)
// if (window.webkitURL) {
// URi = window.webkitURL.createObjectURL(file);
// } else if (window.URL && window.URL.createObjectURL) {
// URi = window.URL.createObjectURL(file);
// } else {
// URi = null;
// }
const url = URi
// 初始化
const qr = new QrCode()
// 解析二维码,返回promise
return qr.decodeFromImage(url)
}
3.在页面上使用
const handleFileChange = (event, index) => {
console.log(event, index);
console.log(
event.target.childNodes[0].files[0],
"event.childNodes.childNodes.files"
);
// onFileChange(event.target.childNodes[0].files[0], index);
handleUpload(event.target.childNodes[0].files[0], index);
// onFileChange(event.target.childNodes[0].files[0]);
const result = getQrUrl(event.target.childNodes[0].files[0])
result.then(res => {
console.log(res);
if (res.data) {
console.log(res.data, '二维码内容')
if (res.data.length > 12) {
imageList[index].code = res.data
if (res.data.indexOf("|") != -1 && res.data.length > 12) {
var str = res.data.split("|")
imageList[index].code = str[0]
imageList[index].yanz = str[1]
}
} else if (res.data.indexOf("|") == -1 && res.data.length == 12) {
imageList[index].code = res.data.slice(0, 6)
imageList[index].yanz = res.data.slice(6)
} else if (res.data.indexOf("|") == -1 && res.data.length < 12) {
imageList[index].code = res.data
imageList[index].yanz = ""
}
// Toast('识别二维码成功!')
} else {
Taro.showToast({
title: "识别失败,请重新上传",
icon: "none",
duration: 2000,
})
}
})
};
我的这个方法是上传图片的 获取的参数是file 在你们的那里可能不一样 根据你们的实际需求去调整
GitHub 加速计划 / vu / vue
80
16
下载
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
最近提交(Master分支:4 个月前 )
73486cb5
* chore: fix link broken
Signed-off-by: snoppy <michaleli@foxmail.com>
* Update packages/template-compiler/README.md [skip ci]
---------
Signed-off-by: snoppy <michaleli@foxmail.com>
Co-authored-by: Eduardo San Martin Morote <posva@users.noreply.github.com> 6 个月前
e428d891
Updated Browser Compatibility reference. The previous currently returns HTTP 404. 6 个月前
更多推荐
已为社区贡献9条内容
所有评论(0)