【问题标题】:get image size before download下载前获取图像大小
【发布时间】:2018-06-15 06:41:33
【问题描述】:

我在我的项目中使用 Potoswipe。 Potoswipe 需要定义图像大小。在我使用简单的 PHP 的时候,现在在无服务器时代它看起来像是一个问题。

如何在客户端获取图像尺寸?我检查了一些云存储提供商,他们都提供调整大小,但这并不是我想要的,我需要一个完整的图像属性,然后在初始化应用程序时上传图像。

【问题讨论】:

  • Photoswipe 常见问题解答中未涵盖的您需要了解哪些内容? photoswipe.com/documentation/faq.html -- 它提供了从短 HEAD 获取图像大小的示例代码,或者建议您使用云托管 API。
  • 如果您使用的是 Google Cloud Storage,请查看这篇 SO 帖子,其中解释了 Cloud Storage 如何查看对象以及可以提供哪些元数据 - stackoverflow.com/questions/50323461/…
  • 我看过 Photoswipe 常见问题解答。老实说,无论如何它都需要预先下载图像。我还在项目中使用了 Vue,该项目已经花费了一些工作来连接 Photoswipe。那么自定义元数据或将大小保存在数据库中的唯一方法是什么?
  • 所以我的解决方案是使用这个库github.com/image-size/image-size

标签: google-cloud-storage cloudflare cloudinary


【解决方案1】:

最简单的事情是找到一个带有 API 的托管服务,该 API 可以提供您需要的元数据。

否则,您可以通过仅查看前几十个字节来计算图像的尺寸。所有现代图像格式都在文件头中包含尺寸。 [Photoswipe FAQ][1] 中链接了三种语言的示例。

因此,您需要下载足够的字节(这因文件格式而异)。为此,您需要在 HTTP 请求中使用 Range 标头。例如:

curl http://i.imgur.com/z4d4kWk.jpg -i -H "Range: bytes=0-1023"

... 将获得该图像的第一个千字节。无论您使用什么 HTTP 客户端,它都可以设置请求标头。

【讨论】:

  • 谢谢你,看起来很有希望。
猜你喜欢
  • 2023-04-05
  • 2012-08-18
  • 1970-01-01
  • 2013-06-29
  • 2014-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多