当前位置:   article > 正文

H5 移动端识别二维码或条形码_h5识别条形码

h5识别条形码

移动端实现扫一扫,对二维码或者条形码进行识别

二维码的识别有很多插件,比如:vue-qrcode-reader,@zxing/library,但是vue-qrcode-reader无法识别条形码,最后选择了@zxing/library,这里记录一下:

一、安装插件  使用cnpm或者yarn都可以

cnpm install @zxing/library -S

二、上代码

  1. <template>
  2. <div class="container">
  3. <video ref="video" id="video" class="scan-video" autoplay></video>
  4. </div>
  5. </template>
  6. <script>
  7. import { BrowserMultiFormatReader } from '@zxing/library'
  8. export default {
  9. name: 'ProductTraceUiCeshi',
  10. data() {
  11. return {
  12. codeReader: null,
  13. deviceId: '',
  14. }
  15. },
  16. mounted() {
  17. this.codeReader = new BrowserMultiFormatReader()
  18. this.openScan()
  19. },
  20. beforeDestroy() {
  21. this.codeReader.reset()
  22. },
  23. methods: {
  24. openScan() {
  25. let that = this
  26. this.codeReader
  27. .getVideoInputDevices()
  28. .then((devices) => {
  29. if (devices && devices.length > 0) {
  30. let length = devices.length
  31. that.deviceId =
  32. length > 1 ? devices[length - 1].deviceId : devices[0].deviceId
  33. that.setDecode()
  34. }
  35. })
  36. .catch(() => {
  37. this.$toast('无法获取照相机')
  38. })
  39. },
  40. setDecode() {
  41. let that = this
  42. that.codeReader.reset()
  43. that.codeReader.decodeFromInputVideoDeviceContinuously(
  44. that.deviceId,
  45. 'video',
  46. (result, err) => {
  47. that.scanResult = ''
  48. if (result) {
  49. that.codeReader.reset()
  50. this.$toast('result:' + result.text)
  51. }
  52. if (err && !err) {
  53. that.codeReader.reset()
  54. this.$toast('err:' + JSON.stringify(err))
  55. }
  56. }
  57. )
  58. },
  59. },
  60. }
  61. </script>
  62. <style lang="less" scoped>
  63. .container {
  64. position: relative;
  65. height: 100vh;
  66. width: 100%;
  67. background-color: rgba(0, 0, 0, 0.1);
  68. }
  69. .scan-video {
  70. height: calc(100% - 4px);
  71. width: 100%;
  72. object-fit: cover;
  73. }
  74. </style>

注意:video 我这边在安卓app中调用的时候,因为照相机视频流还未返回,会出现

 这种情况,可以给video添加poster

此外还有一个问题,如果识别结束,跳转到下个页面,在下个页面如果使用倒计时返回,则不能获取到相机视频流,如果手动触发按钮返回,则可以获取到相机视频流,暂未找到原因

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

闽ICP备14008679号