2012-10-19 6 views
3

Ruby on Rails에서 이미지의 크기를 가져와야합니다. 이미지가 원격 URL에 있습니다. 전체 이미지를 다운로드하지 않겠습니다.이미지를 다운로드하지 않고 너비와 높이를 가져옵니다.

+0

정보 서버 측이 필요합니다. 이미지가 원격 URL (예 : Facebook)에 있습니다. 내 데이터베이스에 너비와 높이와 함께 링크를 저장해야하지만 다운로드하지 않아도됩니다. – Tony

+1

이미지의 크기는 일반적으로 헤더에 있으므로 필요한 정보를 제공하는 서버가 없으면 헤더를 읽고 크기를 제공하지 않으면이 작업을 수행 할 수 없습니다. –

+1

이 [post] [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 스택의 자원을 클라이언트와 호스트 모두에 묶어 놓습니다. –

관련 문제