4

RubyonRailsで画像のサイズを取得する必要があります。画像はリモートURLにあります。画像全体をダウンロードしたくありません。

4

3 に答える 3

6

ほとんどの場合、(帯域幅を使用する場合のように)実際にイメージをダウンロードしないとダウンロードできません。

そうは言っても、FastImagegemを使用してこれを行うことができます。

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でのリモートイメージタイプの検証または読み取り」では、知っておく必要のあることのほとんどをカバーしています。それはあなたが本当に必要とするより少し深いかもしれませんが、それはよく説明されています。

それ以外の場合は、これを1回だけ実行するサーバー側コントローラーを作成できます。どこからでも画像とその寸法を読むことができます。ユーザーが画像を取得すると、画像サイズを再度ダウンロードすることなく、サーバーの「キャッシュ」からサイズが読み取られます。その特定の画像に関する情報が利用できない場合は、それを取得して、寸法とURLを保存します。これにより、帯域幅を大幅に節約できます。

于 2012-10-19T13:37:51.470 に答える