Giter Site home page Giter Site logo

yyan / vue-qrcode-reader Goto Github PK

View Code? Open in Web Editor NEW

This project forked from gruhn/vue-qrcode-reader

0.0 1.0 0.0 2.83 MB

A set of Vue.js components for detecting and decoding QR codes.

Home Page: https://gruhn.github.io/vue-qrcode-reader

License: MIT License

JavaScript 53.38% Vue 46.62%

vue-qrcode-reader's Introduction

Logo

for Vue.js 2 npm monthly downloads Travis CI: build status
is maintained? yes licence: MIT badges = awesome
uses semantic release code style: prettier
size minified + gzipped npm current version
Mentioned in Awesome Vue

documentation | live demos

A set of Vue.js components, allowing you to detect and decode QR codes, without leaving the browser.

  • ๐ŸŽฅ QrcodeStream accesses the device camera and continuously scans incoming frames.
  • ๐Ÿšฎ QrcodeDropZone renders to 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 @decode="onDecode"></qrcode-stream>
methods: {
  onDecode (decodedString) {
    // ...
  }
}

Screenshots

Screenshot 1 Screenshot 2 Screenshot 3

Browser support ๐Ÿ“ˆ

QrcodeStream

This component fundamentally depends on the Stream API.

Internet Explorer Edge Firefox Chrome Safari
No Yes Yes Yes 11+
  • Chrome requires HTTPS or localhost (see Troubleshooting for help)
  • Safari also requires HTTPS even on localhost (see #48)
  • on iOS it really only works with Safari. It won't work in
    • Chrome for iOS, Firefox for iOS, ... (see #29)
    • a WebView component of your native iOS App
    • web apps added to home screen (see #76)

QrcodeDropZone and QrcodeCapture

The newest API these components depend on is the FileReader API.

Internet Explorer Edge Firefox Chrome Safari
10+ Yes Yes Yes Yes
  • Drag-and-drop is not supported on mobile
  • Home screen web apps on iOS prior to 11.3 don't support QrcodeCapture (see this StackOverflow question)

Installation ๐Ÿ“ฆ

Module import

Run:

npm install vue-qrcode-reader

Either import the components independantly for local registration:

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);

โš ๏ธ A css file is included when importing the package. You may have to setup your bundler to embed the css in your page.

Classic import

Vue itself must be included first. Then add the following CSS and JS file:

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 Decode All demo, since it renders error messages. If you see errors, consult the docs to understand their meaning.
    • The demo works but it doesn't work in my project: Listen for the init 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.
  • Color inverted QR codes are not supported (dark background, light foreground).
  • Model 1 QR codes are also not supported.

Thanks ๐Ÿ™

BrowserStack Logo โ€ƒโ€ƒ Travis-CI Logo

vue-qrcode-reader's People

Contributors

gruhn avatar dependabot[bot] avatar adriangoransson avatar afontcu avatar jkathmann avatar pamtaro avatar uwolfer avatar b4r7 avatar gewra avatar

Watchers

James Cloos 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.