UNPKG

angular-weblineindia-qrcode-scanner-dg

Version:
363 lines (256 loc) 9.92 kB
# ZXing ### Runs on your favorite ECMAScript ecosystem > If it doesn't, we gonna make it. ## What is ZXing? > [ZXing][1] ("zebra crossing") is an open-source, multi-format 1D/2D barcode image processing library implemented in Java, with ports to other languages. ## Supported Formats | 1D product | 1D industrial | 2D | | ---------- | ------------------- | -------------- | | ~~UPC-A~~ | Code 39 | QR Code | | ~~UPC-E~~ | ~~Code 93~~ | Data Matrix | | EAN-8 | Code 128 | ~~Aztec~~ \* | | EAN-13 | ~~Codabar~~ | ~~PDF 417~~ \* | | | ITF | ~~MaxiCode~~ | | | RSS-14 | | | ~~RSS-Expanded~~ \* | **\*** In progress, may have open PR. ## Installation `npm i angular-weblineindia-qrcode-scanner/library --save` or `yarn add angular-weblineindia-qrcode-scanner/library` ## Usage ### Use on browser with ES6 modules: ```html <script type="module"> import { BrowserQRCodeReader } from 'angular-weblineindia-qrcode-scanner/library'; const codeReader = new BrowserQRCodeReader(); const img = document.getElementById('img'); try { const result = await codeReader.decodeFromImage(img); } catch (err) { console.error(err); } console.log(result); </script> ``` #### Or asynchronously: ```html <script type="module"> import('angular-weblineindia-qrcode-scanner/library').then({ BrowserQRCodeReader } => { const codeReader = new BrowserQRCodeReader(); const img = document.getElementById('img'); try { const result = await codeReader.decodeFromImage(img); } catch (err) { console.error(err); } console.log(result); }); </script> ``` ### Use on browser with AMD: ```html <script type="text/javascript" src="https://unpkg.com/requirejs"></script> <script type="text/javascript"> require(['angular-weblineindia-qrcode-scanner/library'], ZXing => { const codeReader = new ZXing.BrowserQRCodeReader(); const img = document.getElementById('img'); try { const result = await codeReader.decodeFromImage(img); } catch (err) { console.error(err); } console.log(result); }); </script> ``` ### Use on browser with UMD: ```html <script type="text/javascript" src="https://unpkg.com/angular-weblineindia-qrcode-scanner/library@latest"></script> <script type="text/javascript"> window.addEventListener('load', () => { const codeReader = new ZXing.BrowserQRCodeReader(); const img = document.getElementById('img'); try { const result = await codeReader.decodeFromImage(img); } catch (err) { console.error(err); } console.log(result); }); </script> ``` ### Use outside the browser with CommonJS: ```javascript const { MultiFormatReader, BarcodeFormat } = require('angular-weblineindia-qrcode-scanner/library/esm5'); // use this path since v0.5.1 const hints = new Map(); const formats = [BarcodeFormat.QR_CODE, BarcodeFormat.DATA_MATRIX/*, ...*/]; hints.set(DecodeHintType.POSSIBLE_FORMATS, formats); const reader = new MultiFormatReader(); reader.setHints(hints); const luminanceSource = new RGBLuminanceSource(imgWidth, imgHeight, imgByteArray); const binaryBitmap = new BinaryBitmap(new HybridBinarizer(luminanceSource)); reader.decode(binaryBitmap); ``` ## Browser Support The browser layer is using the [MediaDevices](https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices) web API which is not supported by older browsers. _You can use external polyfills like [WebRTC adapter](https://github.com/webrtc/adapter) to increase browser compatibility._ Also, note that the library is using the [`TypedArray`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray) (`Int32Array`, `Uint8ClampedArray`, etc.) which are not available in older browsers (e.g. Android 4 default browser). _You can use [core-js](https://github.com/zloirock/core-js) to add support to these browsers._ ### Scanning from Video Camera To display the input from the video camera you will need to add a video element in the HTML page: ```html <video id="video" width="300" height="200" style="border: 1px solid gray" ></video> ``` To start decoding, first obtain a list of video input devices with: ```javascript const codeReader = new ZXing.BrowserQRCodeReader(); codeReader .listVideoInputDevices() .then(videoInputDevices => { videoInputDevices.forEach(device => console.log(`${device.label}, ${device.deviceId}`) ); }) .catch(err => console.error(err)); ``` If there is just one input device you can use the first `deviceId` and the video element id (in the example below is also 'video') to decode: ```javascript const firstDeviceId = videoInputDevices[0].deviceId; codeReader .decodeFromInputVideoDevice(firstDeviceId, 'video') .then(result => console.log(result.text)) .catch(err => console.error(err)); ``` If there are more input devices then you will need to chose one for `codeReader.decodeFromInputVideoDevice` device id parameter. You can also provide `undefined` for the device id parameter in which case the library will automatically choose the camera, preferring the main (environment facing) camera if more are available: ```javascript codeReader .decodeFromInputVideoDevice(undefined, 'video') .then(result => console.log(result.text)) .catch(err => console.error(err)); ``` ### Scanning from Video File Similar as above you can use a video element in the HTML page: ```html <video id="video" width="300" height="200" style="border: 1px solid gray" ></video> ``` And to decode the video from an url: ```javascript const codeReader = new ZXing.BrowserQRCodeReader(); const videoSrc = 'your url to a video'; codeReader .decodeFromVideo('video', videoSrc) .then(result => console.log(result.text)) .catch(err => console.error(err)); ``` You can also decode the video url without showing it in the page, in this case no `video` element is needed in HTML. ```javascript codeReader .decodeFromVideoUrl(videoUrl) .then(result => console.log(result.text)) .catch(err => console.error(err)); // or alternatively codeReader .decodeFromVideo(null, videoUrl) .then(result => console.log(result.text)) .catch(err => console.error(err)); ``` ### Scanning from Image Similar as above you can use a img element in the HTML page (with src attribute set): ```html <img id="img" src="qrcode-image.png" width="200" height="300" style="border: 1px solid gray" /> ``` And to decode the image: ```javascript const codeReader = new ZXing.BrowserQRCodeReader(); const img = document.getElementById('img'); codeReader .decodeFromImage(img) .then(result => console.log(result.text)) .catch(err => console.error(err)); ``` You can also decode the image url without showing it in the page, in this case no `img` element is needed in HTML: ```javascript const imgSrc = 'url to image'; codeReader .decodeFromImage(undefined, imgSrc) .then(result => console.log(result.text)) .catch(err => console.error(err)); ``` Or decode the image url directly from an url, with an `img` element in page (notice no `src` attribute is set for `img` element): ```html <img id="img-to-decode" width="200" height="300" style="border: 1px solid gray" /> ``` ```javascript const imgSrc = 'url to image'; const imgDomId = 'img-to-decode'; codeReader .decodeFromImage(imgDomId, imgSrc) .then(result => console.log(result.text)) .catch(err => console.error(err)); ``` ## Barcode generation To generate a QR Code SVG image include 'zxing.qrcodewriter.min.js' from `build/vanillajs`. You will need to include an element where the SVG element will be appended: ```html <div id="result"></div> ``` And then: ```javascript const codeWriter = new ZXing.BrowserQRCodeSvgWriter(); // you can get a SVG element. const svgElement = codeWriter.write(input, 300, 300); // or render it directly to DOM. codeWriter.writeToDom('#result', input, 300, 300); ``` ## Want to Contribute? - Created something awesome, made this code better, added some functionality, or whatever (this is the hardest part). - [Fork it](http://help.github.com/forking/). - Create new branch to contribute your changes. - Commit all your changes to your branch. - Submit a [pull request](http://help.github.com/pull-requests/). ----- ## Need Help? We also provide a free, basic support for all users who want to use this Angular QR-Scanner in their software project. In case you want to customize this scanner to suit your development needs, then feel free to contact our [Angular developers](https://www.weblineindia.com/hire-vuejs-developer.html). ----- ## Collection of Components We have built many other components and free resources for software development in various programming languages. Kindly click here to view our [Free Resources for Software Development](https://www.weblineindia.com/software-development-resources.html). ------ ## Changelog Detailed changes for each release are documented in [CHANGELOG.md](./CHANGELOG.md). ## Credits angular-weblineindia-qrcode-scanner is inspired by [@zxing/ngx-scanner](https://www.npmjs.com/package/@zxing/ngx-scanner). ## License [MIT](LICENSE) [mit]: https://github.com/weblineindia/Vue-Swipe-Action/blob/master/LICENSE ## Keywords angular, editor, native, wysiwyg, angular-editor, angular-wysiwyg-editor, wysiwyg-editor, rich, rich text editor