2012-10-19 249 views
3

我需要在Ruby on Rails中獲取圖像的大小。該圖像位於遠程URL中。 我不想下載整個圖像。獲取圖像的寬度和高度而不下載圖像

+0

我需要信息服務器端,圖像在遠程URL(即Facebook)。我需要將鏈接存儲在數據庫中,以及寬度和高度,但不需要下載它。 – Tony

+1

圖像的大小通常位於其標題中,因此除非您有服務器提供您需要的信息(即讀取標題並提供尺寸),否則無法完成此操作。 –

+1

這[後] [1]幾乎涵蓋了你需要知道的東西。 [1]:http://stackoverflow.com/questions/11962445/validating-or-reading-a-remote-image-type-in​​-javascript –

回答

6

如果沒有真正下載圖像(如使用帶寬),您很可能無法做到這一點。

這就是說,你可以使用FastImage寶石爲你做這個。

require 'fastimage' 

FastImage.size("http://stephensykes.com/images/ss.com_x.gif") 
=> [266, 56] # width, height 
+0

我想這個工作對我來說... – ahnbizcad

0

Validating or reading a remote image type in javascript」幾乎涵蓋了你需要知道的東西。如果你真的需要它可能會更深一些,但它很好解釋。

否則,您可以創建一個服務器端控制器來只做一次。您可以從任何地方讀取圖像及其尺寸。用戶獲取圖像時,將從服務器的「緩存」中讀取尺寸,而不再次下載圖像尺寸。如果關於該特定圖片的信息不可用,您將獲取並存儲尺寸和URL。這可以節省很多帶寬。

0

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請求(範圍請求)。

+0

如果我沒有記錯,在繁忙的系統上取消請求並不是一個好的解決方案。它綁定IP棧中的資源,可能在客戶端和主機上。 –

相關問題