我正在尝试对节点中的图像进行下采样。我将该图像存储为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问题。提前感谢您提供的任何帮助!
答案 0 :(得分:2)
一个问题是数据URI中的元数据('data:image/png;base64,'
)在传递给Buffer.from()
之前没有被剥离,导致图像数据损坏。首先删除元数据应允许正确解码数据,假设base64内容本身有效。