【问题标题】:How do I transmute a base64 string into an input buffer?如何将 base64 字符串转换为输入缓冲区?
【发布时间】:2017-09-21 21:43:52
【问题描述】:

我正在尝试对节点中的图像进行下采样。我将该图像存储为 base64 编码字符串(即:“data:image/png;base64,iVBOR”等)。我正在使用夏普 npm 包。该文档似乎描述了 sharp 可以采用图像的文件路径或“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}`) );
    }

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

【问题讨论】:

  • 您是否记得在传递给Buffer.from() 之前先去除非base64 标头数据('data:image/png;base64,' 部分)?
  • 我现在不会尝试
  • @mscdex 是的,现在可以了!谢谢

标签: node.js base64 buffer


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-29
    • 1970-01-01
    • 1970-01-01
    • 2016-03-09
    • 2016-09-23
    相关资源
    最近更新 更多