You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

163 lines
3.3 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

JavaScript QRCode reader for HTML5 enabled browser.
===================================================
This was started as a port of Lazarsofts qrcode reader.
It is a maintained fork, so feel free to open issues or PR !
[![Build Status](https://travis-ci.org/edi9999/jsqrcode.svg?branch=master&style=flat)](https://travis-ci.org/edi9999/jsqrcode)
Installation
============
```
npm install qrcode-reader
```
Usage
=====
```
var QrCode = require('qrcode-reader');
```
Create a new instance of QrCode:
```
var qr = new QrCode();
```
Set its callback to a custom function:
```
qr.callback = function(error, result) {
if(error) {
console.log(error)
return;
}
console.log(result)
}
```
Passing image data in node
==========================
You have to use an external imageparser
1. You can use `npm install --save jimp` which doesn't have any dependency (runs in pure node).
```javascript
var Jimp = require("jimp");
var buffer = fs.readFileSync(__dirname + '/image.png');
Jimp.read(buffer, function(err, image) {
if (err) {
console.error(err);
// TODO handle error
}
var qr = new QrCode();
qr.callback = function(err, value) {
if (err) {
console.error(err);
// TODO handle error
}
console.log(value.result);
console.log(value);
};
qr.decode(image.bitmap);
});
```
2. You can use `npm install --save image-parser`, which depends on lwip or graphicsmagick
```javascript
var ImageParser = require("image-parser");
var buffer = fs.readFileSync(__dirname + '/image.png');
var img = new ImageParser(img);
img.parse(function(err) {
if (err) {
console.error(err);
// TODO handle error
}
var qr = new QrCode();
qr.callback = function(err, value) {
if (err) {
console.error(err);
// TODO handle error
return done(err);
}
console.log(value.result);
console.log(value);
};
qr.decode({width: img.width(), height: img.height()}, img._imgBuffer);
});
```
Passing image data in the browser
=================================
Since the browser contains the Image global, we can use it to open images with URL, Data URI, ...
Decode an image by its URL or Data URI:
```
qr.decode(url or DataURL);
```
Decode an image by context.getImageData: Works with [web workers](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers).
```
var context = canvas.getContext("2d"); var data = context.getImageData(0, 0, width, height);
qr.decode(data);
```
====================
If you want, you can build the script yourself.
First clone the repository, then from the directory of this repository, do:
```
npm install
```
To run the build process and generate a JavaScript file called `dist/index.js` you can run from node:
```
npm run build
```
To run the tests:
```
npm test
```
Make it work in the browser
===========================
The generated file `dist/index.js` works in the browser.
You will have access to the global variable `QrCode` if you do the following in your HTML:
\`\`\`
<script src="dist/index.js"></script> \`\`\`
See [examples/browser-upload/index.html](examples/browser-upload/index.html) for a very basic example using a file upload.
Changelog
=========
See [`CHANGELOG.md`](CHANGELOG.md)\.