All Projects → zxing-js → browser

zxing-js / browser

Licence: MIT License
ZXing for JS's browser layer with decoding implementations for browser.

Programming Languages

typescript
32286 projects
javascript
184084 projects - #8 most used programming language
HTML
75241 projects

Projects that are alternatives of or similar to browser

Zxinglite
🔥 ZXing的精简版,优化扫码和生成二维码/条形码,内置闪光灯等功能。扫描风格支持:微信的线条样式,支付宝的网格样式。几句代码轻松拥有扫码功能 ,ZXingLite让集成更简单。(扫码识别速度快如微信)
Stars: ✭ 2,117 (+2305.68%)
Mutual labels:  barcode, qr-code, zxing
Zxing
ZXing ("Zebra Crossing") barcode scanning library for Java, Android
Stars: ✭ 28,795 (+32621.59%)
Mutual labels:  barcode, qr-code, zxing
Ngx Scanner
Angular (2+) QR code, Barcode, DataMatrix, scanner component using ZXing.
Stars: ✭ 420 (+377.27%)
Mutual labels:  barcode, qr-code, zxing
Code Scanner
Code scanner library for Android, based on ZXing
Stars: ✭ 543 (+517.05%)
Mutual labels:  barcode, qr-code, zxing
Qr Code Scanner
📠 A simple, fast and useful progressive web application
Stars: ✭ 982 (+1015.91%)
Mutual labels:  barcode, qr-code
Zxingview
👍 Lowest cost integration and most convenient customization zxing on android
Stars: ✭ 23 (-73.86%)
Mutual labels:  barcode, zxing
Postscriptbarcode
Barcode Writer in Pure PostScript
Stars: ✭ 316 (+259.09%)
Mutual labels:  barcode, qr-code
Scanbot Sdk Example Android
Document scanning SDK example apps for the Scanbot SDK for Android.
Stars: ✭ 67 (-23.86%)
Mutual labels:  barcode, qr-code
Library
Multi-format 1D/2D barcode image processing library, usable in JavaScript ecosystem.
Stars: ✭ 1,006 (+1043.18%)
Mutual labels:  barcode, zxing
Qrandbarcodescanner
An Android app for scanning QR codes and barcodes
Stars: ✭ 114 (+29.55%)
Mutual labels:  barcode, zxing
Segno
Python QR Code and Micro QR Code encoder
Stars: ✭ 144 (+63.64%)
Mutual labels:  barcode, qr-code
python
Build Python extension with Dynamsoft Barcode Reader.
Stars: ✭ 35 (-60.23%)
Mutual labels:  barcode, qr-code
scanbot-sdk-example-ios
No description or website provided.
Stars: ✭ 17 (-80.68%)
Mutual labels:  barcode, qr-code
Czxing
C++ port of ZXing and ZBar for Android.
Stars: ✭ 854 (+870.45%)
Mutual labels:  barcode, zxing
Qzxing
Qt/QML wrapper library for the ZXing library. 1D/2D barcode image processing library
Stars: ✭ 401 (+355.68%)
Mutual labels:  barcode, zxing
Scannermapp
A QR-code and barcode acanner app built in Delphi using ZXing and TFrameStand
Stars: ✭ 65 (-26.14%)
Mutual labels:  barcode, zxing
quickie
📷🔍 Android QR code scanning library
Stars: ✭ 163 (+85.23%)
Mutual labels:  barcode, qr-code
Nativescript Barcodescanner
🔎 NativeScript QR / barcode (bulk)scanner plugin
Stars: ✭ 280 (+218.18%)
Mutual labels:  barcode, qr-code
Barcode
barcode.php - Generate barcodes from a single PHP file. MIT license.
Stars: ✭ 141 (+60.23%)
Mutual labels:  barcode, qr-code
Nbzxing
🔥 2020年最好用的开源扫码,全方位优化,强烈推荐!! 支持多种常规zxing无法扫出的码,用就完了!! 🔥
Stars: ✭ 184 (+109.09%)
Mutual labels:  barcode, zxing

ZXing

What is ZXing?

ZXing ("zebra crossing") is an open-source, multi-format 1D/2D barcode image processing library implemented in Java, with ports to other languages.

Browser layer

This is a library for enabling you to use with ease the ZXing for JS library on the browser. It includes features like scanning an <img> element, as well as <video>, images and videos from URLs and also it helps handling webcam use for scanning directly from a hardware connected camera. It does not offers support to any physical barcode readers or things like that.

See @zxing-js/library for the complete API including decoding classes and use outside of the browser.

See @zxing-js/ngx-scanner for using the library in Angular.

See @zxing-js/text-encoding for special character support in barcodes.

Usage (how to use)

Installation, import into app and usage examples in this section.

Instalation

Install via yarn, npm, etc:

yarn add @zxing/browser
npm i @zxing/browser

Or just import an script tag from your favorite NPM registry connected CDN:

<!-- loading ZXingBrowser via UNPKG -->
<script type="text/javascript" src="https://unpkg.com/@zxing/browser@latest"></script>

How to import into your app

ES6 modules

<script type="module">
  import { BrowserQRCodeReader } from '@zxing/browser';

  const codeReader = new BrowserQRCodeReader();

  // do something with codeReader...

</script>
Or asynchronously
<script type="module">
  import('@zxing/browser').then({ BrowserQRCodeReader } => {

    const codeReader = new BrowserQRCodeReader();

    // do something with codeReader...

  });
</script>

With AMD

<script type="text/javascript" src="https://unpkg.com/requirejs"></script>
<script type="text/javascript">
  require(['@zxing/browser'], ZXingBrowser => {

    const codeReader = new ZXingBrowser.BrowserQRCodeReader();

    // do something with codeReader...

  });
</script>

With UMD

<script type="text/javascript" src="https://unpkg.com/@zxing/browser@latest"></script>
<script type="text/javascript">
  window.addEventListener('load', () => {

    const codeReader = new ZXingBrowser.BrowserQRCodeReader();

    // do something with codeReader...

  });
</script>

Using the API

Examples here will assume you already imported ZXingBrowser into your app.

Scan from webcam

Continuous scan (runs and decodes barcodes until you stop it):

const codeReader = new BrowserQRCodeReader();

const videoInputDevices = await ZXingBrowser.BrowserCodeReader.listVideoInputDevices();

// choose your media device (webcam, frontal camera, back camera, etc.)
const selectedDeviceId = videoInputDevices[0].deviceId;

console.log(`Started decode from camera with id ${selectedDeviceId}`);

const previewElem = document.querySelector('#test-area-qr-code-webcam > video');

// you can use the controls to stop() the scan or switchTorch() if available
const controls = await codeReader.decodeFromVideoDevice(selectedDeviceId, previewElem, (result, error, controls) => {
  // use the result and error values to choose your actions
  // you can also use controls API in this scope like the controls
  // returned from the method.
});

// stops scanning after 20 seconds
setTimeout(() => controls.stop(), 20000);

You can also use decodeFromConstraints instead of decodeFromVideoDevice to pass your own constraints for the method choose the device you want directly from your constraints.

Also, decodeOnceFromVideoDevice is available too so you can await the method until it detects the first barcode.

Scan from video or image URL

const codeReader = new ZXingBrowser.BrowserQRCodeReader();

const source = 'https://my-image-or-video/01.png';
const resultImage = await codeReader.decodeFromImageUrl(source);
// or use decodeFromVideoUrl for videos
const resultVideo = await codeReader.decodeFromVideoUrl(source);

Scan from video or image HTML element

const codeReader = new ZXingBrowser.BrowserQRCodeReader();

const sourceElem = document.querySelector('#my-image-id');
const resultImage = await codeReader.decodeFromImageElement(sourceElem);
// or use decodeFromVideoElement for videos
const resultVideo = await codeReader.decodeFromVideoElement(sourceElem);

Other scan methods

There's still other scan methods you can use for decoding barcodes in the browser with BrowserCodeReader family, all of those and previous listed in here:

  • decodeFromCanvas
  • decodeFromImageElement
  • decodeFromImageUrl
  • decodeFromConstraints
  • decodeFromStream
  • decodeFromVideoDevice
  • decodeFromVideoElement
  • decodeFromVideoUrl
  • decodeOnceFromConstraints
  • decodeOnceFromStream
  • decodeOnceFromVideoDevice
  • decodeOnceFromVideoElement
  • decodeOnceFromVideoUrl

That's it for now.

List of browser readers

  • BrowserAztecCodeReader
  • BrowserCodeReader (abstract, needs to be extend for use)
  • BrowserDatamatrixCodeReader
  • BrowserMultiFormatOneDReader
  • BrowserMultiFormatReader (2D + 1D)
  • BrowserPDF417CodeReader
  • BrowserQRCodeReader

Customize BrowserCodeReader options

You can also customize some options on the code reader at instantiation time. More docs comming soon.


Bless

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].