获取存储在 Amazon S3 上的图像的图像高度和宽度

Posted

技术标签:

【中文标题】获取存储在 Amazon S3 上的图像的图像高度和宽度【英文标题】:Get image height and width of image stored on Amazon S3 【发布时间】:2012-06-02 03:06:52 【问题描述】:

我打算将图像存储在 Amazon S3 上,如何从 Amazon S3 中检索:

文件大小 图像高度 图像宽度?

【问题讨论】:

【参考方案1】:

您可以在上传图像时将图像尺寸存储在用户定义的元数据中,然后使用 REST API 读取这些数据。

有关用户定义元数据的更多信息,请参阅此页面:http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html

【讨论】:

这应该是公认的答案,而不是存储在数据库中。有一个问题:一旦文件上传到亚马逊,元数据就无法更改。所以没有追溯的解决方案。必须复制文件。 这有点愚蠢,因为您可以在 S3 Web 后端修改元数据 - 那么他们为什么不在 API 中支持它呢?哑哑哑【参考方案2】:

可以通过将Content-Length 响应标头读取到对您的文件的简单HEAD 请求来获取文件大小。也许您的客户可以帮助您完成此查询。更多信息请关注S3 API docs。

Amazon S3 只是为您提供存储,(几乎)仅此而已。无法通过 API 访问图像尺寸。您必须获取整个文件,并自己计算其尺寸。如果适用,我建议您在将文件上传到 S3 时将此信息存储在数据库中。

【讨论】:

【参考方案3】:

在 Node 上,使用 image-size 和 node-fetch 可以非常简单。

async function getSize(imageUrl) 
  const response = await fetch(imageUrl);
  const buffer = await response.buffer();
  return imageSize(buffer);

【讨论】:

但这不意味着后端会下载图像吗?并因此反应较慢?

以上是关于获取存储在 Amazon S3 上的图像的图像高度和宽度的主要内容,如果未能解决你的问题,请参考以下文章

尽管存储桶是公共的,但 Amazon S3 base64 图像不适用于 og:image 标签

在iOS Swift中不使用AWS SDK在Amazon S3存储桶中上传的背景图像(背景模式)

图像未从 Amazon S3 存储桶加载

使用 Node JS 从 Amazon S3 私有存储桶中检索图像

使用 amazon sdk 和存储桶策略从 ios 应用程序将图像上传到 amazon s3

Amazon S3 图像在 Chrome 中获取 CORS 错误/错误,在 Firefox 中没有错误