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

使用Node.js Sharp处理头像时遇「不支持图片格式」错误

解决Sharp裁剪头像时的「不支持图片格式」错误

首要修复:等待文件写入完成再处理

你的代码中image.mv是异步操作,但你没有等待它执行完毕就调用Sharp读取文件,这会导致Sharp读取到不完整的文件,进而误判为不支持的格式。

修改后的代码:

// 先等待文件移动完成
await image.mv(__dirname + "/upload/" + image.name);

var input = __dirname + "/upload/" + image.name;
try {
  await sharp(input)
    .extract({ width: 300, height: 300, left: 50, top: 70 })
    .toFile(__dirname + "/upload/" + "pfp3.png");
} catch (error) {
  console.log(error);
}

res.sendStatus(200);
});

额外排查方向

  • 确认upload文件夹存在:如果目标文件夹未创建,image.mv可能会失败,导致Sharp找不到文件也会触发格式错误。可以提前递归创建文件夹:
    const fs = require('fs').promises;
    await fs.mkdir(`${__dirname}/upload/`, { recursive: true });
    
  • 重新安装Sharp依赖:如果Sharp的底层编译依赖有问题,也可能导致格式识别失败,执行以下命令重装:
    npm uninstall sharp
    npm install sharp
    
  • 验证文件实际有效性:有些文件后缀是PNG/JPG,但实际内容损坏或格式不符,用系统图片查看器确认文件能否正常打开。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 03:05:12