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

我正在尝试为具有EXIF“关键字”属性值的图像提取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信息但不能访问其他信息。

EXIF元数据由相机创建,因此它仅包含技术相关的内容。 您真正想要访问的是IPTC和XMP 。

支持mini_magick的Imagemagick允许读取IPTC ,例如image["%[IPTC:2:25]"]用于关键字( 更新 :了解性能问题,请参阅注释)。

至于XMP,我不知道一个简单的方法。 你可以尝试跑步

 `identify -verbose #{your_filename}` 

然后grub包含xmp

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

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

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