Giter VIP home page Giter VIP logo

vue-qrcode-reader's Introduction

Logo

for Vue 3 npm monthly downloads
is maintained? yes licence: MIT badges = awesome
uses semantic release code style: prettier
size minified + gzipped npm current version
Mentioned in Awesome Vue

live demos | api reference

A set of Vue.js components for detecting QR codes and various other barcode formats right in the browser:

  • ๐ŸŽฅ QrcodeStream continuously scans frames from a camera stream.
  • ๐Ÿšฎ QrcodeDropZone is an empty region where you can drag-and-drop images to be decoded.
  • ๐Ÿ“‚ QrcodeCapture is a classic file upload field, instantly scanning all files you select.

All components are responsive. Beyond that, close to zero styling. Make them fit your layout. Usage is simple and straight forward:

<qrcode-stream @detect="onDetect"></qrcode-stream>
methods: {
  onDetect (detectedCodes) {
    // ...
  }
}

Preview

preview screencast 1 preview screencast 2

Installation ๐Ÿ“ฆ

With NPM

Run

npm install vue-qrcode-reader

You can import the components independantly

import { QrcodeStream, QrcodeDropZone, QrcodeCapture } from 'vue-qrcode-reader'

const MyComponent = {
  //
  components: {
    QrcodeStream,
    QrcodeDropZone,
    QrcodeCapture
  }

  // ...
}

or register all of them globally right away

import Vue from 'vue'
import VueQrcodeReader from 'vue-qrcode-reader'

Vue.use(VueQrcodeReader)

Without NPM

Include the following JS file:

https://unpkg.com/vue-qrcode-reader/dist/vue-qrcode-reader.umd.cjs

Make sure to include it after Vue:

<script src="./vue.js"></script>
<script src="./vue-qrcode-reader.umd.cjs"></script>

All components are automatically registered globally. Use kebab-case to reference them in your templates:

<qrcode-stream></qrcode-stream>
<qrcode-drop-zone></qrcode-drop-zone>
<qrcode-capture></qrcode-capture>

Troubleshooting โšก

I don't see the camera when using QrcodeStream.

  • Check if it works on the demo page. Especially the Handle Errors demo, since it renders error messages.
    • The demo works but it doesn't work in my project: Listen for the error event to investigate errors.
    • The demo doesn't work: Carefully review the Browser Support section above. Maybe your device is just not supported.

I'm running a dev server on localhost. How to test on my mobile device without HTTPS?

  • If your setup is Desktop Chrome + Android Chrome, use Remote Debugging which allows your Android device to access your local server as localhost.
  • Otherwise use a reverse proxy like ngrok or serveo to temporarily make your local server publicly available with HTTPS.
  • There are also loads of serverless/static hosting services that have HTTPS enabled by default and where you can deploy your web app for free (e.g. GitHub Pages, GitLab Pages, Google Firebase, Netlify, Heroku, ZEIT Now, ...)

Some of my QR codes are not being detected.

  • Make sure, there is some white border around the QR code.
  • Test your QR codes in the upstream packages: barcode-detector -> zxing-wasm -> zxing-cpp, and file detection issues in the highest-level repository where the problem first occurs.

1D barcodes are not being detected.

The default value for the formats prop is "['qr_code']", which reflects the setting before the formats prop was available. You'll need to add other barcode formats to this prop to detect those types of barcodes. Check out this demo.

How to make it work with Vue 2?

Support is dropped but you can downgrade to vue-qrcode-reader v3.* or lower.

I get a "Failed to fetch" error at runtime for some Wasm file.

That Wasm file implements the QR code detector. Unfortunately, it's not very convenient to bundle this file with the package. So by default we fetch it at runtime from a CDN. That's an issue for offline applications or applications that run in a network with strict CSP policy. For a workaround see: gruhn#354

torch is not supported on my device, although it has a flashlight.

Support for torch is inconsistent across devices, cameras and browsers and operating systems. On some devices the rear camera supports torch but the front camera doesn't, even if the front camera actually has a flashlight.

Furthermore, torch is not supported on iOS at all (last checked iOS 17.1).

Visit this page with your device. The list of links represents all cameras installed on the device. If you click, the camera should be loaded. Below the camera view the JSON object of "capabilities" is printed. If it doesn't contain the key/value pair "torch": true then flashlight is not supported for that camera.

This JSON object provided as payload of the camera-on event.

vue-qrcode-reader's People

Contributors

777vasya77 avatar adriangoransson avatar afontcu avatar b4r7 avatar cinob avatar danbaechtold avatar dargmuesli avatar dbakan avatar dependabot[bot] avatar gewra avatar glumb avatar gruhn avatar hyrumcoop avatar iqre8 avatar jkathmann avatar jovan-aw avatar limsongyu avatar pamtaro avatar robwalker avatar samydoesit avatar sec-ant avatar stepanex avatar uwolfer avatar v-dyomin avatar vpulim avatar yaroslawww avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.