vue3 html5-qrcode 实现扫描二维码 仿照wx扫码样式

ops/2024/10/18 18:24:41/

直接上代码:npm i html5-qrcode

<van-button class="scanButton" @click="stop" type="success">结束扫码</van-button><van-search v-model="searchName" show-action label="" placeholder="请输入姓名" @search="onSearch"><template #action><div @click="getCameras"><van-icon name="scan" />扫码报到</div></template></van-search>import { Html5Qrcode } from 'html5-qrcode';const getCameras = () => {scanCodeSta.value = true;// showToast('正在初始化扫码,请稍后');showToast({message: '正在初始化扫码,请稍后',position: 'bottom',});Html5Qrcode.getCameras().then((devices) => {if (devices && devices.length) {// 如果有2个摄像头,1为前置的if (devices.length > 1) {cameraId.value = devices[1].id;} else {cameraId.value = devices[0].id;}devicesInfo.value = devices;// start开始扫描start();}}).catch((err) => {console.log('获取设备信息失败', err); // 获取设备信息失败showToast('获取设备信息失败');});
}
const start = () => {html5QrCode.value = new Html5Qrcode('reader');setTimeout(() => {closeToast();}, 700);html5QrCode.value.start(cameraId.value, {focusMode: 'continuous', //设置连续聚焦模式// fps: 10, // 设置每秒多少帧fps: 5, //设置扫码识别速度// qrbox: { width: '100%', height: '100%' }, // 设置取景范围qrbox: { width: 320, height: 320 }, // 设置取景范围// aspectRatio: 1.777778, // 可选,视频馈送需要的纵横比,(4:3--1.333334, 16:9--1.777778, 1:1--1.0)传递错误的纵横比会导致视频不显示}, (decodedText, decodedResult) => {// showToast('扫描的结果===', decodedText, decodedResult);result.value = decodedText;if (decodedText) {stop();handleScanCheckin();}}, (errorMessage) => {// showToast('暂无扫描结果');console.log('暂无扫描结果', errorMessage);}).catch((err) => {console.log(`Unable to start scanning, error: ${err}`);});
}
const stop = () => {scanCodeSta.value = false;if (!html5QrCode.value) {return;}html5QrCode.value.stop().then((ignore) => {console.log('QR Code scanning stopped.', ignore);}).catch((err) => {console.log('Unable to stop scanning.', err);});
}:deep(#qr-shaded-region) {overflow: hidden;
}:deep(#qr-shaded-region::after) {position: absolute;content: '';width: 100%;top: 0;left: 0;transform: translateY(-100%);height: 50px;background: linear-gradient(180deg, rgba(0, 255, 51, 0) 43%, #00ff33 211%);border-bottom: 1px solid #00ff33;animation: scan-animation 2s linear infinite;
}@keyframes scan-animation {0% {top: 0;}100% {top: 100%;}
}


http://www.ppmy.cn/ops/24504.html

相关文章

Halide 高效的图像处理语言 简化图像编程

Halide 高效的图像处理语言 简化图像编程 github源码 Halide是用C作为宿主语言的一个图像处理相关的DSL(Domain Specified Language)语言&#xff0c;全称领域专用语言。 主要的作用为在软硬层面上(与算法本身的设计无关)实现对算法的底层加速&#xff0c;我们有必要对其有一…

课程35:Docker容器:Windows Containers与Linux Containers区别

这里写目录标题 🚀前言一、Windows Containers与Linux Containers区别二、基于Linux本地Docker调试2.1 添加Docker支持2.2 Windows与Linux本地Docker调试的区别2.2.1 对比不同目标OS2.2.2 Dockerfile区别2.2.3 项目文件2.3 总结三、Windows下基于Linux Containers部署3.1 发布…

初学python记录:力扣1329. 将矩阵按对角线排序

题目&#xff1a; 矩阵对角线 是一条从矩阵最上面行或者最左侧列中的某个元素开始的对角线&#xff0c;沿右下方向一直到矩阵末尾的元素。例如&#xff0c;矩阵 mat 有 6 行 3 列&#xff0c;从 mat[2][0] 开始的 矩阵对角线 将会经过 mat[2][0]、mat[3][1] 和 mat[4][2] 。 …

高扬程水泵,提升水源新选择!— 恒峰智慧科技

在炎炎夏日&#xff0c;阳光炙烤着大地&#xff0c;森林火灾的发生频率也随之上升。火势猛烈&#xff0c;烟雾弥漫&#xff0c;给森林带来了极大的破坏。为了保护森林资源&#xff0c;我们必须采取有效的措施来扑灭火灾。而在这其中&#xff0c;高扬程水泵成为了提升水源新选择…

OpenAI 新推出 AI 问答搜索引擎——SearchGPT 震撼登场

您的浏览器不支持 video 标签。 OpenAI-SearchGPT 近日&#xff0c;OpenAI 曝光了自己的一款令人瞩目的 AI 问答搜索引擎——SearchGPT。这款搜索引擎带来了全新的搜索体验&#xff0c;给整个行业带来了巨大的压力。 SearchGPT 支持多种强大的功能。首先&#xff0c;它能够通过…

react props传参

props是父子传参的常用方法。 一、主要功能 1.传参 定义&#xff1a;父级组件向子级组件传递参数。 2.验证数据类型格式 定义&#xff1a;可以指定父组件传递过来数据为指定类型。 3.设置默认值 定义&#xff1a;在参数未使用时&#xff0c;直接默认为指定值。 二、实例代…

【快速入门 LVGL】-- 5、Gui Guider界面移植到STM32工程

上篇&#xff0c;我们已学习&#xff1a;【快速入门 LVGL】-- 4、显示中文 工程中添加了两个按钮作示范。运行效果如图&#xff1a; 本篇&#xff1a;把Gui Guider设计好的界面&#xff0c;移植到STM32工程。 特别地&#xff1a; 在使用Gui Guider进行界面设计时&#xff0c;应…

Slave SQL线程与PXB FTWRL死锁问题分析

1. 问题背景 2.27号凌晨生产环境MySQL备库在执行备份期间出现因FLUSH TABLES WITH READ LOCK未释放导致备库复制延时拉大&#xff0c;慢日志内看持锁接近25分钟未释放。 版本&#xff1a; MySQL 5.7.21PXB 2.4.18 慢查询日志&#xff1a; 备份脚本中的备份命令&#xff1a;…