【问题标题】:Reading QR Code - base64 Image height and width读取二维码——base64图片高宽
【发布时间】:2018-06-09 04:22:21
【问题描述】:

我有一个后端 Node.js 端点,它应该接受包含 QR 码的 base64 格式的图像并返回一个 16 位字母数字字符串。 (我用的是qrcode-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);
    }
}

【问题讨论】:

    标签: node.js image base64 qr-code


    【解决方案1】:

    似乎最简单的方法是将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);
            })
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2013-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-24
      • 1970-01-01
      相关资源
      最近更新 更多