忘れないように記録しとこ

カバの樹

QRコードリーダーがWEBページで?!「vue-qrcode-reader」の使い方

2019年8月14日

vue-qrcode-readerとは

 

vue-qrcode-readerは、QRコードリーダーを実装できるコンポーネントライブラリです。
WEBページ上でカメラを起動してリアルタイムでQRコードを読み取ることができます。

他にもQRコードアップロードして読み込むコンポーネントが搭載されています。

 

環境

この記事は、以下の管理人の検証環境にて記事にしています。

vue.js 2.6.10
vue-qrcode-reade 2.0.3

 

ライブラリの取得

ライブラリを取得するには、npm, CDNのどれか一つを使用します。

npm

npm install vue-qrcode-reader

CDN


<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/vue-qrcode-reader@2.0.3/dist/vue-qrcode-reader.css">
<script src="https://cdn.jsdelivr.net/npm/vue-qrcode-reader@2.0.3/dist/vue-qrcode-reader.browser.js"></script>

 

gitリポジトリは以下から取得できます。

 

導入手順

管理人が行った、動作確認サンプルを実装するために、以下の手順でソースコードを導入していきます。
QRコードリーダーを実装します。

 

step.1 ライブラリの呼び出し

まずライブラリを呼び出す為に、以下の2通りのケースで呼び出します。

(1)webpack等の場合 ※モジュール版は未検証です。

import QrcodeStream from 'vue-qrcode-reader'

(2)WEBページの場合

const QrcodeStream = window.VueQrcodeReader.QrcodeStream;

 

step.2 Vueインスタンスを設定

new Vue({
  el: '#app',
  components: {
    'qrcode-stream':QrcodeStream,
  },
  data: {
    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 permisson"
        } 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"
        }
      }
    }
  }
})

 

step.3 テンプレートを準備

<div id="app">
    <p class="error">{{ error }}</p>
    <p class="decode-result">Last result: <b>{{ result }}</b></p>
    <qrcode-stream @decode="onDecode" @init="onInit" />
</div>

 

サンプル

 

さいごに

QRコードリーダーWEBページに実装できるコンポーネントライブラリでした。

これを上手いこと利用すれば、QRコードでの入場管理のアプリとかをPWAで作ることも出来そうですね。

色々できそうでワクワクしてきました。

 

QRコードを作成するライブラリの記事も書きました。

合わせてご利用ください。

https://www.kabanoki.net/4494/

 

今日はこの辺でー

 

  • B!