我正在尝试为具有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信息而不是其他信息。
答案 0 :(得分:2)
EXIF metadata由相机创建,因此它仅包含技术相关内容。您实际想要访问的内容是IPTC和XMP。
支持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。