Vue中实现扫描二维码和条形码

news/2024/12/29 18:33:58/

如何使用Vue实现一个H5扫码功能?
安装 @zxing/library 依赖 npm i @zxing/library --save;
需要注意的是 一定要在https环境下使用!一定要在https环境下使用!一定要在https环境下使用!重要的事情说三遍。否则摄像头调用不出来。

<template><div class="page-scan"><!-- 扫码区域 --><video ref="video" id="video" class="scan-video" autoplay></video><!-- 提示语 --><div v-show="msgShow" class="scan-msg">{{ message}}</div></div>
</template>
<script>
import { BrowserMultiFormatReader } from "@zxing/library";
export default {name: "scanRegion",data() {return {codeReader: null,scanText: "",message: "正在扫描",msgShow: false,};},created() {this.codeReader = new BrowserMultiFormatReader();this.openScan();},// 记得销毁,要不然返回再进去会不显示destroyed() {this.codeReader.reset();},methods: {openScan() {this.codeReader.getVideoInputDevices().then((videoInputDevices) => {this.tipShow = true;this.tipMsg = "正在调用摄像头...";// 因为获取的摄像头有可能是前置有可能是后置,但是一般最后一个会是后置,所以在这做一下处理// 默认获取第一个摄像头设备idlet firstDeviceId = videoInputDevices[0].deviceId;if (videoInputDevices.length > 1) {// 获取后置摄像头let deviceLength = videoInputDevices.length;--deviceLength;firstDeviceId = videoInputDevices[deviceLength].deviceId;}this.decodeFromInputVideoFunc(firstDeviceId);}).catch((err) => {this.tipShow = false;console.error(err);});},decodeFromInputVideoFunc(firstDeviceId) {this.codeReader.reset(); // 重置this.scanText = "";this.codeReader.decodeFromInputVideoDeviceContinuously(firstDeviceId,"video",(result, err) => {this.tipMsg = "正在尝试识别...";this.scanText = "";if (result) {// 获取到的是二维码内容,然后在这个if里面写业务逻辑即可this.scanText = result.text;if (this.scanText) {this.tipShow = false;this.codeReader.reset();let params = {scId: this.$route.query.scId,qrcode: this.scanText}this.$axios.post('/medapp/api/scanner/user/scanner/add',params).then(res => {if (res.data.code == 0) {this.$router.push({path: '/scansuccess',query: {scId: this.$route.query.scId,regId: res.data.data.regId,regName: res.data.data.regName,regPhone: res.data.data.regPhone,regOrg: res.data.data.regOrg,}})} else {this.$router.push({path: '/scanerror',query: {scId: this.$route.query.scId,msg: res.data.msg}})}})}}if (err && !err) {this.message= "识别失败";setTimeout(() => {this.msgShow = false;}, 2000);console.error(err);}});},},
};
</script><style lang="scss" scoped>
.scan-video {width: 100%;height: 80vh;
}
.scan-msg {width: 100vw;text-align: center;margin-bottom: 10vh;color: white;font-size: 5vw;
}
.page-scan {width: 100vw;background-color: #363636;
}
</style>

以上就是实现一个扫码的基本内容,其中还会有很多可以优化的,比如扫码成功后停顿一下,做一个动态的框这些,有感兴趣的可以试试,分享一下;

PS:以上本人自己试验以及搜集网上内容实现的,如有不足请指出


http://www.ppmy.cn/news/172321.html

相关文章

PC端 二维码/条形码扫描器1.1-支持截图+摄像头+本地图片+扫描枪识别

之前在全球最大同性交友网站发现一个功能更丰富点的扫码软件&#xff0c;还是PC端的&#xff0c;看挺多人感兴趣的就分享下 获取传送门 简易二维码/条形码扫描器 C# WPF 原生开发&#xff0c;在电脑上识别二维码/条形码&#xff08;反正就是各种码&#xff09; 功能丰富 支…

15.3,python中扫描条形码和二维码

简单说明&#xff0c;代码太难懂&#xff0c;先做此记录留待来日在看 步骤&#xff1a; 1&#xff0c;pip install pyzbar安装好该模块。pyzbar模块是Python一个开源库用于扫描和识别二维码信息。 2&#xff0c;随便在网上找好两张截图 3&#xff0c; from pyzbar import p…

构建Arduino和TFT LCD条形码扫描仪

条形码是由一系列平行的黑线和宽度可变的白色空间组成的正方形或矩形图像&#xff0c;可由扫描仪读取。 条形码被应用到产品上&#xff0c;作为快速识别的一种手段。 在许多其他用途中&#xff0c;它们在零售商店中用作购买过程的一部分&#xff0c;在仓库中用于跟踪库存&#…

java读取条码并打印,条码扫描仪扫描时以Java打印条码

I want to read the barcode and print it in a console in a simple java program as soon as the barcode scans on top of any barcode. Is there any way? 解决方案 final Scanner scanner; try { scanner new Scanner(); try { scanner.release(); scanner.close(); } c…

条码扫描器接口编程

目前的条形码扫描器有点类似外接键盘&#xff08;其实从消息传送上它就相当于一个键盘&#xff09;&#xff0c;把输入焦点定位到可输入的控件上&#xff0c;一扫描相应的条形码信息就输入到文本框中去了&#xff0c;但是如果没有输入焦点&#xff0c;或另一个不相干的程序获得…

python读取usb扫码枪数据_仅在数据可用时从USB条形码扫描仪读取

更新时间: 我已经成功地用Python读取了一个USB条码扫描器。如果是空的,我希望能够转义fp.read(),并检查用户是否按下了左LCD按钮def read Barcode lcd.backlight(lcd.GREEN) hid = { 4: a, 5: b, 6: c, 7: d, 8: e, 9: f, 10: g, 11: h, 12: i, 13: j, 14: k, 15: l, 16: m,…

条形码扫描器会受到光波和无线电波的影响吗?

条形码扫描器会受到光波和无线电波的影响吗&#xff1f; 条形码是由一系列不同宽度的平行黑条和空格组成。每个条和空格的组合或序列都是一个代码&#xff0c;表示诸如产品类型、大小、制造商或运输来源等信息。条形码结构如图1所示。 条形码通常有不同的大小。条形码的大小…

树莓派linux扫码枪,树莓派应用:摄像头条形码扫描

树莓派小而强大,有非常多的应用场景。这里分享下使用树莓派,摄像头,以及C和Python代码来实现一个条形码扫描工具。之前分享过如何把OpenCV Python获取的图像传递到C层处理,会用到里面的代码。 测试环境 设备: Raspberry Pi 3 系统: RASPBIAN JESSIE WITH PIXEL 准备工作 Dy…