1. vue-qrcode-reader

在浏览器端html中有一款依赖可以直接调用摄像头扫码,vue-qrcode-reader。
分别提供QrcodeStream、QrcodeDropZone、QrcodeCapture用来识别二维码。

  1. QrcodeStream: 调用摄像头扫码
  2. QrcodeDropZone:将图片移到识别区域内识别二维码
  3. QrcodeCapture:选择原生拍照或者图片到浏览器识别二维码。

2. 安装

npm install vue-qrcode-reader

3. QrcodeStream直接调用摄像头扫码

  1. init方法是初始化调用摄像头,此时如果摄像头报错会有很多提示,请酌情处理
  2. decode方法,当识别到二维码会把识别信息触发出来
<template><div><p class="error">{{ error }}</p><p class="decode-result">Last result: <b>{{ result }}</b></p><qrcode-stream @decode="onDecode" @init="onInit" /></div>
</template><script>
import { QrcodeStream } from 'vue-qrcode-reader'export default {components: { QrcodeStream },data () {return {result: '',error: ''}},methods: {onDecode (result) {this.result = result},async onInit (promise) {try {await promise} catch (error) {if (error.name === 'NotAllowedError') {this.error = "ERROR: you need to grant camera access permission"} else if (error.name === 'NotFoundError') {this.error = "ERROR: no camera on this device"} else if (error.name === 'NotSupportedError') {this.error = "ERROR: secure context required (HTTPS, localhost)"} else if (error.name === 'NotReadableError') {this.error = "ERROR: is the camera already in use?"} else if (error.name === 'OverconstrainedError') {this.error = "ERROR: installed cameras are not suitable"} else if (error.name === 'StreamApiNotSupportedError') {this.error = "ERROR: Stream API is not supported in this browser"} else if (error.name === 'InsecureContextError') {this.error = `ERROR: Camera access is only permitted in secure context. Use HTTPS or localhost rather than HTTP.`;} else {this.error = `ERROR: Camera error (${error.name})`;}}}}
}
</script><style scoped>
.error {font-weight: bold;color: red;
}
</style>

4. 针对部分IOS【Vue warn】错误

TypeError: Reflect.construct requires the first argument to be a constructor

我目前没有更好的解决办法,只能充分利用vue生命周期中的捕获错误处理 errorCaptured。

有个开发说新版本不支持的

5. QrcodeCapture用原生拍照或者直接选择图片识别

decode方法和QrcodeStream一致,如果识别到了二维码将触发该事件。

<template><div><p>Capture:<select v-model="selected"><option v-for="option in options" :key="option.text" :value="option">{{ option.text }}</option></select></p><hr/><p class="decode-result">Last result: <b>{{ result }}</b></p><qrcode-capture @decode="onDecode" :capture="selected.value" /></div>
</template><script>
import { QrcodeCapture } from 'vue-qrcode-reader'export default {components: { QrcodeCapture },data () {const options = [{ text: "rear camera (default)", value: "environment" },{ text: "front camera", value: "user" },{ text: "force file dialog", value: false },]return {result: '',options,selected: options[0]}},methods: {onDecode (result) {this.result = result}}
}
</script>

注意:选择图片识别的识别率不是很高,但是已经是planB了,可以试试更好的planB或者让作者再努力一下。

完整demo

vue在调用摄像头扫码(vue-qrcode-reader)相关推荐

  1. vue实现点击按钮调用摄像头扫码

    vue在APP端点击[扫码签到]按钮实现调取摄像头扫码: 1.按钮页面: <template><div><button @click="scanCode&quo ...

  2. Vue h5 调用微信扫码接口

    需求 调用微信扫码接口,然后获取扫码返回结果的url中的参数,携参跳转到其他页面 1. 安装微信js-sdk 通过yarn安装 yarn add weixin-js-sdk 通过npm安装 npm i ...

  3. VUE项目移动端H5调用摄像头扫码

    <template><div><div @click="moveToCameraAVG()" v-cloak><div class=&qu ...

  4. WinForm调用摄像头扫码识别二维码

    前言 因公司业务需求,需要在Windows系统下调用摄像头识别二维码需求,就有了这个功能.根据网上网友提供的一些资料,自己整合应用到项目中,效果还不错(就是感觉像素不是太好).现在将调用摄像头+识别二 ...

  5. 【Vue 调用微信扫码 IOS报错 解决办法】

    遇到一个问题,H5调用摄像头扫码,安卓环境下基本所有机型都可以调起摄像头,但是IOS 只有少部分机型才能调用,参考了网上很多例子 比如以下两位老大哥的例子 Vue 移动端实现调用相机扫描二维码或条形码 ...

  6. vue项目中实现H5调取摄像头扫码扫一扫功能+生成可识别的条形码。单纯的h5网页不涉及真机

    vue项目中实现H5调取摄像头扫码扫一扫功能+生成可识别的条形码. 单纯的h5网页不涉及真机 demo链接 前端同学可以加我一起交流一起进步 案例描述:需求是生成条形码并且在vue项目中实现扫一扫功能 ...

  7. vue实现pc端扫码登录

    vue pc端微信扫码登录 文章目录 vue pc端微信扫码登录 效果图 方式一:npm 安装并引入插件 参数说明 使用 自定义样式 方式二:通过js 引用js文件 vue 使用 注意 效果图 方式一 ...

  8. Vue 实现企业微信扫码登录

    前端 Vue 实现企业微信扫码登录 需求:公司用的企业微信,PC 端的管理后台,想通过企业微信扫码登录.相比传统的账号密码方便很多. 企业微信扫码登录流程文档:(链接) 对于前端来说,重要的是如何构造 ...

  9. 【javascript】浏览器调用摄像头扫二维码踩坑记录

    前言 最近做一个项目需要用浏览器调用摄像头扫二维码,然后就踩了几个坑记录下. 踩坑记录 我一开始发现了zxing这个库,他分为https://www.npmjs.com/package/@zxing/ ...

  10. vue中调用摄像头拍照,并把拍照的base64格式转换为file传递后台

    需求: 在vue项目中使用摄像头拍摄照片传递,进行上传,如果上传成功可以获取到url链接,进行下一步的操作 内容梳理 1.首先进入页面打开摄像头 2.点击手动拍照进行拍摄照片,实时显示拍照效果 3.拿 ...

最新文章

  1. 全球资金看好中国的AI(人工智能)
  2. iis7配置php mysql_IIS7配置支持PHP方法
  3. python在当前目录创建txt文件-python根据txt文本批量创建文件夹
  4. mysql根据父级编码得到父级内容_在mysql查询中通过父级获取所有子级
  5. CocoaPods 的使用与一些异常情况的处理
  6. 计算机硬盘按不同接口,硬盘接口不同 速度差别竟然这么大
  7. 【嵌入式系统】STM32串口通信的四种方法(基于RTOS)
  8. oracle 布尔盲注,Oracle基于延时的盲注总结
  9. 属性getter和setter
  10. Nginx 实现封杀恶意访问
  11. 使用 CocoStudio 创建 Cocos2d-x 序列帧和骨骼动画
  12. 基于matlab的二元幅值光栅设计程序
  13. [蓝桥杯] 青出于蓝胜于蓝
  14. MediaRecorder MPEG4Writer
  15. js 浏览器窗口活跃监听
  16. 【路径规划】基于改进差分算法实现三维多无人机协同航迹规划
  17. 快乐美工:一键解决模糊图片高清精准优化
  18. 计算机仿真塞曼效应实验报告,塞曼效应实验报告[完整版].doc
  19. puzzle(0921)HueBots
  20. 苹果系列产品文件共享神器

热门文章

  1. MySQL性能调优-使用ROLLUP代替UNION ALL
  2. Mac电脑如何录制视频?三种录制流视频的方法带给大家
  3. ArrayList集合学生管理系统,java笔试基础题
  4. html collapse不重叠,html – border-collapse的组合:collapse和transform:translate
  5. FlashFXP,flashfxp连接失败
  6. 1156 Sexy Primes (20 分)(质数 模拟
  7. 数控弯管机xyz转换ybc的算法_全自动数控弯管机程序功能解析
  8. 防抖和节流理解,以及lodash使用
  9. 大疆DJI 精灵 4 RTK 镜头很暗 ISO
  10. 麦吉尔学和ubc计算机专业,申请多伦多、UBC和麦吉尔三所大学建筑专业的作品集要求...