如何将base64字符串转换为输入缓冲区?

时间:2017-04-25 03:35:00

标签: node.js base64 buffer

我正在尝试对节点中的图像进行下采样。我将该图像存储为base64编码的字符串(即:“data:image / png; base64,iVBOR”等)。我正在使用Sharp npm包。该文档似乎描述了锐利可以将文件路径带到图像或“inputBuffer”。我做了一些谷歌搜索并假设Buffer类是他们所指的。连续尝试下面的代码导致我收到以下错误:“输入缓冲区包含不受支持的图像格式。”我的问题可能是什么,如果你不确定,请你推荐一个不同的npm软件包和更清晰的文档吗?

 const downsizeProfileImgForTweet = (user, cb) => {
        let imgBuffer =  Buffer.from(user.profileImg, 'base64');
        sharp(imgBuffer)
        .resize(52, 52)
        .toBuffer()
        .then(data => {
            console.log("success");
            user.profileImg = data;
            cb()
        } )
        .catch( err => console.log(`downisze issue ${err}`) );
    }

我浏览了整个互联网并做了一堆猜测和检查,所以请原谅我的noob问题。提前感谢您提供的任何帮助!

1 个答案:

答案 0 :(得分:2)

一个问题是数据URI中的元数据('data:image/png;base64,')在传递给Buffer.from()之前没有被剥离,导致图像数据损坏。首先删除元数据应允许正确解码数据,假设base64内容本身有效。