4

我需要在 Ruby on Rails 中获取图像的大小。该图像位于远程 URL 中。我不想下载整个图像。

4

3 回答 3

6

如果不实际下载图像(如使用带宽),您很可能无法这样做。

话虽如此,您可以使用FastImage gem 为您执行此操作。

require 'fastimage'

FastImage.size("http://stephensykes.com/images/ss.com_x.gif")
=> [266, 56]  # width, height
于 2012-10-19T13:35:25.527 回答
1

仅 HTTP 标头请求不会帮助您

$ http -h get "http://cdn.sstatic.net/stackoverflow/img/sprites.png"
HTTP/1.1 200 OK
Cache-Control: max-age=604800
Connection: close
Content-Length: 16425
Content-Type: image/png
Date: Fri, 19 Oct 2012 13:39:15 GMT
ETag: "0d1523d7cadcd1:0"
Last-Modified: Thu, 18 Oct 2012 22:02:18 GMT
Server: NetDNA-cache/2.2

因此,您将需要一些 HTTP 响应正文。但是某些图像文件格式的顶部有描述分辨率的标题(尽管 jpeg 没有)。因此,也许您可​​以针对该位发出部分 HTTP 请求(范围请求)。

于 2012-10-19T13:42:15.323 回答
0

在 javascript 中验证或读取远程图像类型”几乎涵盖了您需要了解的内容。它可能比你真正需要的更深一些,但它已经得到了很好的解释。

否则,您可以创建一个服务器端控制器来执行此操作一次。您可以从任何地方读取图像及其尺寸。当用户获取图像时,将从您的服务器“缓存”中读取尺寸,而无需再次下载图像大小。如果有关该特定图像的信息不可用,您将获取它并存储尺寸和 URL。这可以节省大量带宽。

于 2012-10-19T13:37:51.470 回答