首页 > 其他分享 >记录--h5端调用手机摄像头实现扫一扫功能

记录--h5端调用手机摄像头实现扫一扫功能

时间:2024-01-26 17:56:18浏览次数:26  
标签:扫码 html5Qrcode -- 扫一扫 h5 reader qrcode 摄像头

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助

一、前言

最近有遇到一个需求,在h5浏览器中实现扫码功能,其本质便是打开手机摄像头定时拍照,特此做一个记录。主要技术栈采用的是vue2,使用的开发工具是hbuilderX。

经过测试发现部分浏览器并不支持打开摄像头,测试了果子,华子和米,发现夸克浏览器无法打开摄像头实现功能。

h5调用摄像头实现扫一扫只能在https环境下,亦或者是本地调试环境!!

二、技术方案

经过一番了解之后,找到了两个方案

1.使用html5-qrcode(对二维码的精度要求较高,胜在使用比较方便,公司用的是vue2,因此最终采用此方案)

2.使用vue-qrcode-reader(对vue版本和node有一定要求,推荐vue3使用,这里就不展开说了)

三、使用方式

 

当点击中间的扫码时,设置isScanning属性为true,即可打开扫码功能,代码复制粘贴即可放心‘食用’。

使用之前做的准备

通过npm install html5-qrcode 下载包

引入 import { Html5Qrcode } from 'html5-qrcode';

html结构
<view class="reader-box" v-if="isScaning">
	<view class="reader" id="reader"></view>
</view>
所用数据
data(){
    return{
        html5Qrcode: null,
        isScaning: false,
    }
}
methods方法
openQrcode() {
    this.isScaning = true;
    Html5Qrcode.getCameras().then((devices) => {
    if (devices && devices.length) {
    this.html5Qrcode = new Html5Qrcode('reader');
    this.html5Qrcode.start(
        {
        facingMode: 'environment'
        },
        {
        focusMode: 'continuous', //设置连续聚焦模式
        fps: 5,       //设置扫码识别速度
        qrbox: 280   //设置二维码扫描框大小
        },
        (decodeText, decodeResult) => {
         if (decodeText) {	//这里decodeText就是通过扫描二维码得到的内容
            this.action(decodeText)  //对二维码逻辑处理
            this.stopScan(); //关闭扫码功能
        }
    },
        (err) => {
            // console.log(err);  //错误信息
         }
     );
    }
    });
},

stopScan() {
	console.log('停止扫码')
	this.isScaning = false;
	if(this.html5Qrcode){
    this.html5Qrcode.stop();
	}
}
css样式
.reader-box {
		position: fixed;
		top: 0;
		bottom: 0;
		left: 0;
		right: 0;
		background-color: rgba(0, 0, 0, 0.5);
	}

	.reader {
		width:100%;
		// width: 540rpx;
		// height: 540rpx;
		position: absolute;
		top: 50%;
		left: 50%;
		transform: translate(-50%, -50%);
	}

四、最终效果

本文转载于:

https://juejin.cn/post/7316795553798815783

如果对您有所帮助,欢迎您点个关注,我会定时更新技术文档,大家一起讨论学习,一起进步。

 

标签:扫码,html5Qrcode,--,扫一扫,h5,reader,qrcode,摄像头
From: https://www.cnblogs.com/smileZAZ/p/17990318

相关文章

  • t
    #客户端连接服务端,加参数--local-infilemysql--local-infile-uroot-p#设置全局参数local-infile1setgloballocal_infile=1;#执行load指定将b准备好的数据,加载到表结构中loaddatalocalinfile'/root/sql.log'intotabletb_userfieldsterminatedby......
  • CF1654G Snowy Mountain 题解
    题目链接点击打开链接题目解法很牛的题显然可以\(O(n)\)多源\(bfs\)求出\(h_i\)考虑从\(st\)开始最优的操作是什么?先延最短路径到\(p\),然后找到\(p\)的相邻点\(q\),满足\(h_p=h_q\),在\(p,q\)之间横跳,耗完所有动能,然后直接滑下去(不经过高度相同的点)为什么到\(p......
  • 【SQL】SQL Server还原完整备份和差异备份的操作过程
    还原数据库遇到这个提示 学习下差异备份原文链接:https://blog.csdn.net/david_520042/article/details/1297505651.首先右键数据库,点击还原数据库:1、还原完整数据库,选择好完整数据库的备份文件,在【选项】中,【还原选项】选择覆盖现有数据库,【恢复状态】选择第二个,点击确定。......
  • 建立一个1个单位长度的字符串string c(1,str[i])
    https://www.luogu.com.cn/problem/P1765?contestId=155201`include<bits/stdc++.h>usingnamespacestd;strings[10][4]={{},{},{"a","b","c"},{"d","e","f"},{"g","h&q......
  • 字符串“getline”“fgets”“getchar”
    https://www.luogu.com.cn/problem/P8506?contestId=154692`include<bits/stdc++.h>usingnamespacestd;intmain(){intn;intcount=0;cin>>n;getchar();while(n--){chara[1000];fgets(a,sizeof(a),stdin);intflag=0;for(inti=0;a[i+1]!=......
  • 线程状态&线程控制
    线程状态 新建状态newThread()后该线程处于新建状态,与其他Java对象一样,未表现出线程的特征; 就绪状态当Thread的对象调用了start方法后,该线程处于就绪状态;JVM会为当前线程创建运行时环境(虚拟机栈、程序计数器);处于就绪状态的线程并未开始执行,需要等待CPU的调度......
  • 串联谐振在各个领域的应用
    一、引言串联谐振是指电路中电感与电容的串联组合,在特定频率下,电路呈现极低的阻抗,使得电流在该频率下达到最大值。这一现象在电子学、通信、电力电子等领域具有广泛的应用。本文将详细介绍串联谐振在不同领域中的应用。二、串联谐振在高压电设备测试中的应用交流耐压试验:利用串联......
  • 03.基本性能监控系使用
    基本性能监控系统组成 Collectd+InfluxdDB+GrafanaCollectd是一个守护(daemon)进程,用来定期收集系统和应用程序的性能指标,同时提供了以不同的方式来存储这些指标值的机制;InfluxDB开源的、高性能的时序型数据库Grafana一个非常酷的数据可视化平台,常常应用于显示......
  • Distmult
    EMBEDDINGENTITIESANDRELATIONSFORLEARNINGANDINFERENCEINKNOWLEDGEBASESICLR2015abstractmostexsitingmodelunderaunfiedframework,whereentitiesarelow-dimensionalvectorslearnedfromaneuralnetworkandrelationsarebilinearand/orli......
  • Excel 拖动复制公式不改变单元格的相对坐标
    Excel的公式中,如果标记了单元格的坐标。那么在拖动复制公式到其他的单元格的时候,公式里面的单元格的坐标会相对的发生变化。但是有的时候我们需要引用固定单元格上的值,不希望这些坐标发生变化,此时需要在坐标前面加‘$’号,将坐标固定,需要固定行或者列,都可以单独的在行或者列前面加......