当前位置: 首页 > news >正文

H5或者Vue实现二维码识别

前言

1、扫码识别库采用开源的@zxing/library

2、支持js,Vue,lit等实现

原文章地址和代码仓库地址

1、在界面创建video标签用来显示摄像头内容

<!-- 视区 --><!-- lit写法 -->
<video ${ref(this.videoRef)} class="xy-scan-wrap-video" autoplay></video><!-- vue2 -->
<video ref="videoRef" class="xy-scan-wrap-video" autoplay></video><!-- vue3 -->
<video ref={videoRef} class="xy-scan-wrap-video" autoplay></video><!-- js -->
<video id="video" class="xy-scan-wrap-video" autoplay></video>

2、创建扫码对象BrowserMultiFormatReader

import { BrowserMultiFormatReader } from '@zxing/library';/*** 实例*/
private codeReader = new BrowserMultiFormatReader();

3、获取设备的摄像头列表

this.codeReader.listVideoInputDevices().then((videoInputDevices) = >{console.log('[xy-scan] videoInputDevices', videoInputDevices);if (videoInputDevices.length > 0) {// 记录一下扫描到的摄像头数量,这个videoInputDevices是个数组,里面有扫描到的摄像头数据this.listVideoInputDevices = videoInputDevices;return videoInputDevices;}return [];
}).
catch((e) = >{console.error('[xy-scan] listVideoInputDevices', e);return [];
})

4、选择摄像头,开始打开摄像头扫码

this.codeReader.reset(); // 重置
this.resultContent = ''; // 重置
// 设备id
// 切换摄像头,有时候我们取的摄像头不对,就需要切换摄像头,currentDeviceIndex代表摄像头索引
const deviceId = this.listVideoInputDevices[this.currentDeviceIndex] ? .deviceId;// 调用库
// this.videoRef.value表示步骤1创建的video节点,原生js可以使用document获取,Vue可以通过refs获取
this.codeReader.decodeFromVideoDevice(deviceId, this.videoRef.value, (result) = >{this.resultContent = '';// 扫描成功 这个result就是扫描结果,长啥样自己打印出来看看if (result) {// 扫描获取的文字,此时可以进行业务相关逻辑this.resultContent = result.getText();}
});
http://www.lryc.cn/news/215937.html

相关文章:

  • stm32整理(三)ADC
  • Redis-持久化+主从架构
  • STM32H750之FreeRTOS学习--------(四)中断管理
  • Macroscope安全漏洞检测工具简介
  • 【Linux】Nignx的入门使用负载均衡动静分离(前后端项目部署)---超详细
  • 【入门Flink】- 04Flink部署模式和运行模式【偏概念】
  • react面试要点
  • 在Google Kubernetes集群创建分布式Jenkins(一)
  • 【Python全栈_公开课学习记录】
  • uniapp循环列表单选框实现单选
  • 【强化学习】14 —— A3C(Asynchronous Advantage Actor Critic)
  • Google单元测试sample分析(四)
  • 网络套接字编程(二)
  • LLaMA-Adapter源码解析
  • JavaScript设计模式之发布-订阅模式
  • mysql---索引
  • 微信小程序——简易复制文本
  • 【51单片机】矩阵键盘与定时器(学习笔记)
  • vue 中使用async await
  • C语言学习之内存区域的划分
  • Unity Animator cpu性能测试
  • 数据结构 - 顺序表ArrayList
  • 【Echarts】玫瑰饼图数据交互
  • k8s、pod
  • 一天掌握python爬虫【基础篇】 涵盖 requests、beautifulsoup、selenium
  • 睿趣科技:想知道开抖音小店的成本
  • python项目部署代码汇总:目标检测类、人体姿态类
  • 力扣每日一题92:反转链表||
  • Vue+OpenLayers从入门到实战进阶案例汇总目录,兼容OpenLayers7和OpenLayers8
  • C#中使用LINQtoSQL管理SQL数据库之添加、修改和删除