如何使用 Sharp 从 S3 调整图像大小?

Posted

技术标签:

【中文标题】如何使用 Sharp 从 S3 调整图像大小?【英文标题】:How to resize image from S3 with Sharp? 【发布时间】:2021-04-25 18:58:40 【问题描述】:

我正在尝试使用 Node.js API 中的 @aws-sdk/v3 调整从 S3 上传的图像的大小。

首先,我从 S3 获取对象(图像),如下所示:https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/javascriptv3/example_code/s3/src/s3_getobject.ts

...

  const params =  Bucket: AWS_BUCKET_NAME, Key: key 
  const data = await s3.send(new GetObjectCommand(params))
  console.log(` >> Success, bucket returned:`, data) // Log correctly

然后我尝试调整数据(图像)的大小:

  const convert = sharp(data).resize(size, size).webp()

但它会抛出:

 >> data.type: object
(node:35583) UnhandledPromiseRejectionWarning: Error: Input file is missing
...

我不知道应该如何上传回来?

我做错了什么?

【问题讨论】:

【参考方案1】:

我认为sharp 构造函数接受一个缓冲区,但您传递给它的是来自 SDK 请求的整个响应。相反,尝试像这样将 data.Body 传递给Sharp fn:

const convert = sharp(data.Body).resize(size, size).webp();

【讨论】:

以上是关于如何使用 Sharp 从 S3 调整图像大小?的主要内容,如果未能解决你的问题,请参考以下文章

如何在nodejs中使用sharp调整图像大小然后使用multer上传

如何在nodejs中使用sharp调整图像大小然后使用multer上传

如何使用“包含”选项调整图像的大小,但保留原始尺寸的纵横比?

如何在使用 gridfs 保存之前调整大小和图像?

具有清晰上传和调整大小的 Multer-S3

调整大小时夏普图像库旋转图像?