如何在Rails应用程序中使用mini_magick获取EXIF关键字?

时间:2012-03-31 23:18:46

标签: ruby-on-rails imagemagick exif minimagick

我正在尝试为具有EXIF“keywords”属性值的图像提取EXIF信息。我已经使用mini_magick成功读取了EXIF信息,只需打开图像并使用:

image["EXIF:Model"]

出于某种原因,以下任何一项都不会为我知道的图像返回关键字:

image["EXIF:Keywords"]
image["EXIF:XPKeywords"]
image["EXIF:Subject"]

我已使用此实用程序确认相关图片确实包含此信息:http://regex.info/exif.cgi

mini_magick只能访问某些EXIF值吗?看起来很奇怪,我可以访问某些EXIF信息而不是其他信息。

2 个答案:

答案 0 :(得分:2)

EXIF metadata由相机创建,因此它仅包含技术相关内容。您实际想要访问的内容是IPTCXMP

支持mini_magick的Imagemagick允许read IPTC,例如关键字image["%[IPTC:2:25]"]更新:了解性能问题,请参阅评论)。

对于XMP,我不知道一个简单的方法。你可以尝试运行

`identify -verbose #{your_filename}`

然后grub包含xmp

的行

答案 1 :(得分:1)

正如Nash Bridges所指出的,我需要实际访问XMP数据。我找到了一种方法,使用两个宝石:exifr和xmp。安装这两个宝石后,我在我的控制器中使用了以下代码处理图像上传:

tags = XMP.parse(EXIFR::JPEG.new(StringIO.new(params[:file].read))).dc.subject.join(',').downcase

虽然我确信通过mini_magick Image模型的“to_blob”方法解析原始数据是可能的,但我无法找到一种方法只使用mini_magick。