读取二维码-base64图片高宽
Reading QR Code - base64 Image height and width
我有一个后端 Node.js 端点,它应该接受包含 QR 码和 return 16 位字母数字字符串的 base64 图像。 (我用的是二维码-reader包)
但是,我遇到了一个错误,提示我需要传递具有宽度和高度的图像缓冲区。我不确定如何从 base64 图像字符串中获取宽度和高度,因为 npm 上的许多图像包都使用 .png 或 .jpg 格式的文件。
关于如何在 base64 中获取图像的宽度和高度有什么建议吗?
function readQR(){
return function(req, res){
// Load base64 image
var base64Image = req.body.image;
var decodedImg = decodeBase64Image(base64Image);
var imageBuffer = decodedImg.data;
qr.callback = function(err, result){
if(err) console.log(err);
// Regex check whether it is 16 letter alphanumeric
if(/^(\w{16,16})$/.test(result)) res.json(result);
else res.json({
error: 'Invalid dmac address'
})
}
qr.decode(imageBuffer);
}
}
似乎最简单的方法是将 base64 转换回文件并读取缓冲区。使用以下代码成功读取二维码。
function readQR(){
return function(req, res, next){
var base64Image = req.body.image; // Load base64 image
var decodedImg = decodeBase64Image(base64Image);
var imageBuffer = new Buffer(decodedImg.data, 'base64');
fs.writeFileSync(path.join(__dirname, '../', '/temp/image.jpg'), imageBuffer, {encoding: 'base64'}, function(err){
if(err) console.log(err);
});
var buffer = fs.readFileSync(path.join(__dirname, '../', '/temp/image.jpg'));
Jimp.read(buffer, function(error, image){
if(error) console.log(error);
qr.callback = function(err, value){
if(err) console.log(err);
console.log(value);
if(/^(\w{16,16})$/.test(value.result)) res.json({dmac: value.result});
else res.json({
error: 'Invalid dmac address'
})
};
qr.decode(image.bitmap);
})
}
}
我有一个后端 Node.js 端点,它应该接受包含 QR 码和 return 16 位字母数字字符串的 base64 图像。 (我用的是二维码-reader包)
但是,我遇到了一个错误,提示我需要传递具有宽度和高度的图像缓冲区。我不确定如何从 base64 图像字符串中获取宽度和高度,因为 npm 上的许多图像包都使用 .png 或 .jpg 格式的文件。
关于如何在 base64 中获取图像的宽度和高度有什么建议吗?
function readQR(){
return function(req, res){
// Load base64 image
var base64Image = req.body.image;
var decodedImg = decodeBase64Image(base64Image);
var imageBuffer = decodedImg.data;
qr.callback = function(err, result){
if(err) console.log(err);
// Regex check whether it is 16 letter alphanumeric
if(/^(\w{16,16})$/.test(result)) res.json(result);
else res.json({
error: 'Invalid dmac address'
})
}
qr.decode(imageBuffer);
}
}
似乎最简单的方法是将 base64 转换回文件并读取缓冲区。使用以下代码成功读取二维码。
function readQR(){
return function(req, res, next){
var base64Image = req.body.image; // Load base64 image
var decodedImg = decodeBase64Image(base64Image);
var imageBuffer = new Buffer(decodedImg.data, 'base64');
fs.writeFileSync(path.join(__dirname, '../', '/temp/image.jpg'), imageBuffer, {encoding: 'base64'}, function(err){
if(err) console.log(err);
});
var buffer = fs.readFileSync(path.join(__dirname, '../', '/temp/image.jpg'));
Jimp.read(buffer, function(error, image){
if(error) console.log(error);
qr.callback = function(err, value){
if(err) console.log(err);
console.log(value);
if(/^(\w{16,16})$/.test(value.result)) res.json({dmac: value.result});
else res.json({
error: 'Invalid dmac address'
})
};
qr.decode(image.bitmap);
})
}
}