如何从URL中读取图片元数据?

3

我希望能够在不下载文件到本地的情况下,读取已上传到S3的JPEG文件的元数据。在Ruby中有没有这样的方法?

我遇到的问题是Image(Mini)Magick不支持以URL作为源(或者至少我没有找到正确的命令)。

更新:

以下代码可以实现该功能:

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

但是我没有找到一个好的替代品来处理URL的"from_file",因此可以考虑以下方法:

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

无法工作。


你能展示一下你尝试过但没有成功的代码吗? - undefined
1个回答

2

使用 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

谢谢,太棒了!有没有办法只读取元数据而不下载文件(节省带宽)? - undefined
1
你可以尝试逐步从远程位置加载足够的数据,并查看MiniMagick是否会返回所需内容,而无需加载所有数据。我用imagesize gem来做这个 -- 每次只给它几KB的数据,直到它返回成功或者我读取了整个文件。 - undefined
@JohnBintz 有没有一个能够“逐步加载”的Java库? - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接