使用html5-qrcode

npm 地址

1.安装

npm i html5-qrcode

2.使用

<template><div class="container"><div id="reader"></div></div>
</template><script setup lang="ts">
import { onMounted, ref } from 'vue';
import { useRouter } from 'vue-router';
import { Html5Qrcode } from 'html5-qrcode';
import { Html5QrcodeResult, CameraDevice } from './interface';let cameraId = ref('');
let devicesInfo = ref<any>('');
let html5QrCode = ref<any>(null);
const router = useRouter();onMounted(() => {getCameras();
});onUnmounted(() => {stop();
});const getCameras = () => {Html5Qrcode.getCameras().then((devices: CameraDevice[]) => {console.log('摄像头信息', 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) => {// handle errconsole.log('获取设备信息失败', err); // 获取设备信息失败});
};
const start = () => {html5QrCode = new Html5Qrcode('reader');html5QrCode.start(cameraId.value, // retreived in the previous step.{fps: 10, // 设置每秒多少帧qrbox: { width: 250, height: 250 }, // 设置取景范围// scannable, rest shaded.},(decodedText: string, decodedResult: Html5QrcodeResult) => {// do something when code is read. For example:// if (qrCodeMessage) {//   getCode(qrCodeMessage);//   stop();// }console.log('扫描的结果', decodedText, decodedResult);// if (decodedText) {//   router.push('order');// }},(errorMessage: any) => {// parse error, ideally ignore it. For example:// console.log(`QR Code no longer in front of camera.`);console.log('暂无额扫描结果', errorMessage);}).catch((err: any) => {// Start failed, handle it. For example,console.log(`Unable to start scanning, error: ${err}`);});
};
const stop = () => {html5QrCode.stop().then((ignore: any) => {// QR Code scanning is stopped.console.log('QR Code scanning stopped.', ignore);}).catch((err: any) => {// Stop failed, handle it.console.log('Unable to stop scanning.', err);});
};
</script><style lang="scss" scoped>
.container {position: relative;height: 100%;width: 100%;background: rgba($color: #000000, $alpha: 0.48);
}
#reader {top: 50%;left: 0;transform: translateY(-50%);
}
</style>

3.类型

export interface CameraDevice {id: string;label: string;
}/*** Code formats supported by this library.*/
enum Html5QrcodeSupportedFormats {QR_CODE = 0,AZTEC,CODABAR,CODE_39,CODE_93,CODE_128,DATA_MATRIX,MAXICODE,ITF,EAN_13,EAN_8,PDF_417,RSS_14,RSS_EXPANDED,UPC_A,UPC_E,UPC_EAN_EXTENSION,
}class QrcodeResultFormat {// @ts-ignorepublic readonly format: Html5QrcodeSupportedFormats;// @ts-ignorepublic readonly formatName: string;
}/** Detailed scan result. */
export interface QrcodeResult {/** Decoded text. */text: string;/** Format that was successfully scanned. */format?: QrcodeResultFormat;
}/** QrCode result object. */
export interface Html5QrcodeResult {decodedText: string;result: QrcodeResult;
}

使用html5-qrcode 扫描二维码(vue3)相关推荐

  1. QRCode 扫描二维码、扫描条形码、相册获取图片后识别、生成带 Logo 二维码、支持微博微信 QQ 二维码扫描样式...

    QRCode 扫描二维码.扫描条形码.相册获取图片后识别.生成带 Logo 二维码.支持微博微信 QQ 二维码扫描样式 参考链接:https://github.com/bingoogolapple/B ...

  2. mui+html5+实现扫描二维码操作

    利用:barcode Barcode模块管理条码(一维码和二维码)扫描识别,支持常见的一维码(如EAN13码)及二维码(如QR码).通过调用设备的摄像头对条码进行扫描识别,扫描到条码后进行解码并返回码 ...

  3. 简单有效的通过js使用qrcode扫描二维码

    http://ourjs.com/detail/kaq9h3x9n30z

  4. 基于MUI框架的使用HTML5+实现的二维码扫描功能

                                                                               Barcode的一个实现案例 一.简介 Barco ...

  5. Vue3 扫描二维码

    记录下vue3的扫描二维码功能开发(摄像头扫描,二维码上传文件扫描) 1. 安装vue3-qr-reader插件 npm i --save vue3-qr-reader或yarn add vue3-q ...

  6. MUI 结合 HTML5+ 实现的二维码扫描功能

    扫码登录的实现原理 原理解释: 接下来就是对于这个服务的详细实现.首先,大概说一下原理:用户打开网站的登录页面的时候,向浏览器的服务器发送获取登录二维码的请求.服务器收到请求后,随机生成一个uuid, ...

  7. uniapp中qrcode生成二维码后传的参数不见了_二维码扫描登录,你必须知道的 3 件事...

    作者 | 互联网平头哥 本文经授权转载自互联网平头哥(ID:it_pingtouge) 扫二维码登录现在比较常见,比如微信.支付宝等 PC 端登录,并且好像每款 APP 都支持扫码登录,不搞个扫码登录 ...

  8. HTML 5 手机扫描二维码登陆网页

    首先声明我不是专业做前端的,只是一个java开发者,最近要做一个手机版的网站,但是需求要做类似于微信,扫描网页上的二维码登陆网页版微信,以当时认为这东西必须要APP才能支持,因为所有扫描二维码都是必须 ...

  9. 关于Unity调用摄像头扫描二维码与生成二维码的实现方法

    1.常用的生成二维码网址 https://cli.im/ 2.上官网下载二维码插件 http://zxingnet.codeplex.com/ 3.将下载的插件中zxing.unity.dll文件放入 ...

最新文章

  1. Git-remote Incorrect username or password ( access token )
  2. Webpack实现按需打包Lodash的几种方法详解
  3. 【ZooKeeper Notes 28】ZooKeeper典型应用场景一览
  4. UDP实现全双工聊天(聊天工具进阶)pyhton
  5. 利用Log Explorer将你已经delete,truncate,drop过的数据进行恢复
  6. matlab 范德蒙德矩阵,Matlab中fft与fwelch有什么区别?如何用fft求功率谱?
  7. 综述:基于GAN的图像翻译模型盘点
  8. AnnotationConfigApplicationContext容器初始化
  9. HashMap+双向链表实现LRU
  10. Java移位操作小测试
  11. go bson转换成json_你会不会用Go语言实现redis的延时消息队列
  12. 冯诺依曼结构和哈佛结构01
  13. PHP执行超时的那些事
  14. MYSQL——数据修改
  15. python实现数据库查询导出到excel案例
  16. 不改动当前账户密码的情况下,启用其他账户登录windows系统
  17. 计算机和未来汽车有联系吗,汽车的未来是会奔跑的计算机?
  18. 动态IP和静态IP有什么区别?
  19. Xcode6中使用iOS7 SDK的方法
  20. 成熟男人与24岁女孩精彩对白(转)

热门文章

  1. 发那科机器人xyz的方向_确认发那科机器人的位置和姿态教程
  2. [Spark基础]-- spark submmit大会(2017年6月5日 - 7日)
  3. 美团23年春招技术笔试
  4. 分享公众号积分商城系统搭建框架
  5. html设置整个页面遮罩,简单遮罩 实现点击按钮遮住整个页面
  6. win10 64位系统安装S7200编程软件失败的处理办法
  7. 实用五步法教会你指标体系的设计与加工
  8. java的cms系统_基于Java的开源CMS系统选择
  9. HTML怎么样把图片换行,我的css代码如下,为什么读出来的图片每一行只有1个,能不能每行三个,第四个换行_html/css_WEB-ITnose...
  10. 手把手教你如何实现3D Touch