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
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.
const fs = require("fs");
const quirc = require("node-quirc");
const img = fs.readFileSync("./test/data/Hello+World.png");
quirc.decode(img, (err, codes) => {
if (err) {
console.error(`decode failed: ${err.message}`);
} else {
console.dir(codes);
console.log(codes.map((code) => code.data.toString('utf8')));
}
});
quirc.decode(img).then((codes) => {
}).catch((err) => {
});
const context = canvas.getContext('2d');
const imageData = context.getImageData(0, 0, 800, 600);
quirc.decode(imageData).then((codes) => {
console.log(`codes read from ImageData (size=${
imageData.data.length
}, width=${imageData.width}, height=${
imageData.height
}):`, codes);
}).catch((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#L26-L56
testing
Clone the repo and then simply
% npm install && npm test
license
MIT, see LICENSE.