You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从S3获取PNG字符串后使用Jimp处理报错的问题

问题

从S3获取了一段PNG格式的字符串,格式示例如下:

�PNG\r\n' + '\x1A\n' + '\x00\x00\x00\rIHDR\x00\x00\x02\x00\x00\x00\x02\x00\b\x02\x00\x00\x00...

尝试使用Jimp处理该图片,代码如下:

const buffer = Buffer.from(imageString);
const jimpImage = await Jimp.read(buffer.toString());

运行时出现报错:

The argument 'path' must be a string or Uint8Array without null bytes. Received '�PNG\r\n'...

需要解决该报错,实现图片的正常处理。

解决方案
  • 错误原因:将Buffer转为字符串再传给Jimp会破坏PNG的二进制数据。PNG包含null字节和不可打印字符,转字符串时这些关键数据会丢失或损坏,导致Jimp无法识别。
  • 修正代码:直接将Buffer传入Jimp.read(),无需转成字符串:
const buffer = Buffer.from(imageString);
const jimpImage = await Jimp.read(buffer);
  • 特殊情况补充:如果从S3获取的原始字符串是Base64编码格式,需要先指定编码解码后再传入:
// 当imageString为Base64编码时
const buffer = Buffer.from(imageString, 'base64');
const jimpImage = await Jimp.read(buffer);

内容的提问来源于stack exchange,提问作者Shakil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 21:15:47