2010-08-04 49 views
2

我想讀取S3上已經上傳的JPEG的元數據。有沒有辦法做到這一點在Ruby中沒有在本地下載文件?如何從URL中讀取圖像元數據?

我面臨的問題是Image(Mini)Magick不會將URL作爲源(或者至少我沒有找到正確的命令)。

更新:

這是工作:

>> image = MiniMagick::Image.from_file -path_to_file- 
>> image["EXIF:datetime"] 
=> "2010:07:19 23:07:54" 

但我沒有找到 「from_file」 的好分別代替,對於URL,這樣類似:

>> image = MiniMagick::Image.from_url http://image_adress.com/image.jpg 

不起作用。

+0

你能告訴我們你試過的東西沒有用嗎? – michaelmichael 2010-08-04 19:00:01

+0

當然,它已更新。 – 2010-08-06 10:17:24

回答

1

如何使用open-uri?

require 'open-uri' 

image = nil 
open('http://image_adress.com/image.jpg') do |file| 
    image = MiniMagick::Image.from_blob(file.read) rescue nil 
end 
image["EXIF:datetime"] if image 
+0

謝謝,太棒了! 有沒有辦法只讀取元數據而不下載文件(節省帶寬)? – 2010-08-10 17:16:24

+0

您可以嘗試逐步加載來自遠程位置的足夠數據,並查看MiniMagick是否會返回所需的數據而不必加載所有數據。我使用imageize gem來做這件事 - 一次只喂幾KB,直到它成功返回,或者我讀完整個文件。 – 2010-08-10 21:04:17

+0

好的謝謝,我會試試看。 – 2010-08-12 10:11:08