js扫码或者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();
	}
});
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
扫码扫码扫码获取二维码内容扫码扫码扫码获取二维码内容扫码扫码扫码获取二维码内容扫码扫码扫码获取二维码内容扫码扫码扫码获取二维码内容扫码扫码扫码获取二维码内容扫码扫码扫码获取二维码内容扫码扫码扫码获取二维码内容扫码扫码扫码获取二维码内容扫码扫码扫码获取二维码内容扫码扫码扫码获取二维码内容扫码扫码扫码获取二维码内容扫码扫码扫码获取二维码内容扫码扫码扫码获取二维码内容扫码扫码扫码获取二维码内容扫码扫码扫码获取二维码内容扫码扫码扫码获取二维码内容扫码扫码扫码获取二维码内容扫码扫码扫码获取二维码内容扫码扫码扫码获取二维码内容扫码扫码扫码获取二维码内容扫码扫码扫码获取二维码内容扫码扫码扫码获取二维码内容扫码扫码扫码获取二维码内容扫码扫码扫码获取二维码内容扫码扫码扫码获取二维码内容扫码扫码扫码获取二维码内容扫码扫码扫码获取二维码内容扫码扫码扫码获取二维码内容扫码扫码扫码获取二维码内容扫码扫码扫码获取二维码内容扫码扫码扫码获取二维码内容扫码扫码扫码获取二维码内容扫码扫码扫码获取二维码内容扫码扫码扫码获取二维码内容扫码扫码扫码获取二维码内容扫码扫码扫码获取二维码内容扫码扫码扫码获取二维码内容扫码扫码扫码

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值