读取QR码 - base64图像高度和宽度

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了读取QR码 - base64图像高度和宽度相关的知识,希望对你有一定的参考价值。

我有一个后端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);
    }
}
答案

似乎最简单的方法是将base64转换回文件并读取缓冲区。使用以下代码管理成功读取qr代码。

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);
        })
    }
}

以上是关于读取QR码 - base64图像高度和宽度的主要内容,如果未能解决你的问题,请参考以下文章

从base64获取图像高度和宽度GoJS中的图像字符串

如何在 React 中从字符串类型显示 QR 码图像

java读取blob并用base64码进行保存

HTML:Base64 图像显示/复制高度错误

上传时有啥方法可以验证图像的宽度和高度吗?

Go - 将base64字符串保存到文件