https://github.com/kaworu/node-quirc
A NodeJS port of the quirc library (QR decoder library - https://github.com/dlbeer/quirc)
https://github.com/kaworu/node-quirc
nodejs-modules qrcode-scanner
Last synced: 4 months ago
JSON representation
A NodeJS port of the quirc library (QR decoder library - https://github.com/dlbeer/quirc)
- Host: GitHub
- URL: https://github.com/kaworu/node-quirc
- Owner: kaworu
- License: other
- Created: 2016-07-18T11:34:13.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2025-02-24T10:58:13.000Z (10 months ago)
- Last Synced: 2025-02-26T12:18:28.496Z (10 months ago)
- Topics: nodejs-modules, qrcode-scanner
- Language: C
- Homepage:
- Size: 2.13 MB
- Stars: 14
- Watchers: 5
- Forks: 6
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[](https://npmjs.org/package/node-quirc)

# node-quirc
A Node.js Addon of the quirc library (QR decoder library - https://github.com/dlbeer/quirc).
# installation
First, You need libpng and libjpeg (and their header files) installed. Then, simply
```
% npm install node-quirc
```
# documentation
node-quirc aim to be simple to use, the module exposes a `decode()` function
and a `constants` object.
## decode(img[, callback])
`img` must be either a `Buffer` of a PNG or JPEG encoded image file, or a
decoded image in [`ImageData`](https://developer.mozilla.org/en-US/docs/Web/API/ImageData)
format with 1 (grayscale), 3 (RGB) or 4 (RGBA) channels.
When `callback` is provided, it is expected to be a "classic" Node.js callback
function, taking an error as first argument and the result as second argument.
Because the provided image file may contains several QR Code, the result is
always an array on success.
When `decode` is called only with `img` as argument, a `Promise` is returned.
```javascript
const fs = require("fs");
const quirc = require("node-quirc");
// load the image file
const img = fs.readFileSync("./test/data/Hello+World.png");
// callback version
quirc.decode(img, (err, codes) => {
if (err) {
// handle err.
console.error(`decode failed: ${err.message}`);
} else {
// do something with codes.
console.dir(codes);
console.log(codes.map((code) => code.data.toString('utf8')));
}
});
// Promise version
quirc.decode(img).then((codes) => {
// do something with codes.
}).catch((err) => {
// handle err.
});
// alternatively, use an already-loaded ImageData, e.g. from the `canvas` library
const context = canvas.getContext('2d');
const imageData = context.getImageData(0, 0, 800, 600);
quirc.decode(imageData).then((codes) => {
// do something with codes.
console.log(`codes read from ImageData (size=${
imageData.data.length
}, width=${imageData.width}, height=${
imageData.height
}):`, codes);
}).catch((err) => {
// handle err.
});
```
output:
```
[
{
version: 1,
ecc_level: 'H',
mask: 1,
mode: 'BYTE',
eci: 'UTF_8',
data: Buffer [Uint8Array] [ 72, 101, 108, 108, 111 ]
},
{
version: 1,
ecc_level: 'H',
mask: 3,
mode: 'BYTE',
eci: 'UTF_8',
data: Buffer [Uint8Array] [ 87, 111, 114, 108, 100 ]
}
]
[ 'Hello', 'World' ]
```
## constants
see https://github.com/kAworu/node-quirc/blob/master/index.js#L68-L99
# testing
Clone the repo and then simply
```
% npm install && npm test
```
# license
MIT, see [LICENSE](./LICENSE).