当前位置:   article > 正文

h5端调用手机摄像头实现扫一扫功能_h5调用手机摄像头扫描二维码

h5调用手机摄像头扫描二维码

 一、前言


        最近有遇到一个需求,在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';

  1. //html结构
  2. <view class="reader-box" v-if="isScaning">
  3.     <view class="reader" id="reader"></view>
  4. </view>
  1. //所用数据
  2. data(){
  3.     return{
  4.         html5Qrcode: null,
  5.         isScaning: false,
  6.     }
  7. }

  1. //methods方法
  2. openQrcode() {
  3.     this.isScaning = true;
  4.     Html5Qrcode.getCameras().then((devices) => {
  5.     if (devices && devices.length) {
  6.     this.html5Qrcode = new Html5Qrcode('reader');
  7.     this.html5Qrcode.start(
  8.         {
  9.         facingMode: 'environment'
  10.         },
  11.         {
  12.         focusMode: 'continuous', //设置连续聚焦模式
  13.         fps: 5,       //设置扫码识别速度
  14.         qrbox: 280   //设置二维码扫描框大小
  15.         },
  16.         (decodeText, decodeResult) => {
  17.          if (decodeText) {    //这里decodeText就是通过扫描二维码得到的内容
  18.             this.action(decodeText)  //对二维码逻辑处理
  19.             this.stopScan(); //关闭扫码功能
  20.         }
  21.     },
  22.         (err) => {
  23.             // console.log(err);  //错误信息
  24.          }
  25.      );
  26.     }
  27.     });
  28. },
  29. stopScan() {
  30.     console.log('停止扫码')
  31.     this.isScaning = false;
  32.     if(this.html5Qrcode){
  33.     this.html5Qrcode.stop();
  34.     }
  35. }
  1. //css样式
  2. .reader-box {
  3.         position: fixed;
  4.         top: 0;
  5.         bottom: 0;
  6.         left: 0;
  7.         right: 0;
  8.         background-color: rgba(0, 0, 0, 0.5);
  9.     }
  10.     .reader {
  11.         width:100%;
  12.         // width: 540rpx;
  13.         // height: 540rpx;
  14.         position: absolute;
  15.         top: 50%;
  16.         left: 50%;
  17.         transform: translate(-50%, -50%);
  18.     }

四、最终效果

如有问题,欢迎指正,若此文对您有帮助,不要忘记收藏+关注!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/喵喵爱编程/article/detail/964095
推荐阅读
相关标签
  

闽ICP备14008679号