-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathqrdecode.js
47 lines (46 loc) · 2.01 KB
/
qrdecode.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
//var NodeWebcam = require( "node-webcam" );
var Jimp = require("jimp");
var QrCode = require('qrcode-reader');
var fs = require('fs');
module.exports = function (RED) {
function QRDecodeNode(config) {
RED.nodes.createNode(this, config);
var node = this;
node.on('input', function (msg) {
//console.log(`decoding QR data from ${msg.payload}`);
var buf = msg.payload;
//var buffer = fs.readFileSync(__dirname + '/test.jpg');
//var buffer = fs.readFileSync(msg.payload);
if (buf instanceof Buffer) {
Jimp.read(buf, function (err, image) {
if (err) {
node.warn(`error when reading image: ${err}`, {});
msg.payload = {status : 1, message: `error when reading image: ${err}`};
node.send(msg);
// TODO handle error
} else {
var qr = new QrCode();
qr.callback = function (err, value) {
if (err) {
node.warn(`error when decoding: ${err}`, {});
msg.payload = {status : 1, message: `error when decoding image: ${err}`};
node.send(msg);
} else {
node.debug(value.result);
msg.payload = {status : 0, message: `success`, value: `${value.result}`};
//msg.payload = value.result;
node.send(msg);
}
}
qr.decode(image.bitmap);
}
});
} else {
node.warn("invalid input", {});
msg.payload = {status : 1, message: `invalid input`};
node.send(msg);
}
});
}
RED.nodes.registerType("qrdecode", QRDecodeNode);
}