2

我正在尝试提取具有 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 信息但不能访问其他信息,这似乎很奇怪。

4

2 回答 2

2

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

位于 mini_magick 后面的 Imagemagick 允许读取 IPTC,例如image["%[IPTC:2:25]"]关键字(更新:注意性能问题,请参阅评论)。

至于 XMP,我不知道一个简单的方法来做到这一点。你可以尝试运行

`identify -verbose #{your_filename}`

然后 grub 包含xmp.

于 2012-04-01T06:51:52.390 回答
1

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

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

我无法找到仅使用 mini_magick 的方法,尽管我确信通过 mini_magick 图像模型的“to_blob”方法解析原始数据输出是可能的。

于 2012-04-01T11:19:05.600 回答