如何使用 IPTC/EXIF 元数据对照片进行分类?

Posted

技术标签:

【中文标题】如何使用 IPTC/EXIF 元数据对照片进行分类?【英文标题】:How do I use IPTC/EXIF metadata to categorise photos? 【发布时间】:2010-05-04 01:14:02 【问题描述】:

许多照片查看和编辑应用程序允许您检查和更改 JPEG 和其他图像文件中的 EXIF 和 IPTC 数据。例如,我可以在佳能 A430 的图片文件中看到快门速度、光圈和方向等信息。所有这些元数据中有很多很多名称/值对。但是……

如果我想存储一些没有内置字段名称的数据该怎么办。假设我正在拍摄一场田径比赛,我想在每张照片上标记参赛者的参赛号码布。我可以创建一个“bib_number”字段并为其分配“0001”、“5478”、“8124”等值,然后搜索所有 bib_number="5478" 的照片吗?

我花了几个小时搜索,我能想到的最好的办法就是将此自定义信息放在“关键字”字段中,但这并不是我所追求的。有了这个 socution,我必须制作一个查询,比如“关键字包含 bib_number_5478”,而我想要的是“bib_number 是 5478”。

那么 EXIF 和/或 IPTC 标准是否允许额外的用户定义字段名称?

谢谢 凯夫

【问题讨论】:

你看过 XMP 吗?对于自定义字段,这可能是更好的选择。 @kbro:您是在尝试编写自己的软件来执行此操作,还是在寻找现成的解决方案来购买和/或下载? 【参考方案1】:

它可以用于此目的,但它确实不应该:它是用户可编辑的,因此不是放置关键元数据的安全位置。对于这类事情,使用 XMP sidecar 更好:在 XMP 中,根据标准,任何添加的给定应用程序不理解的字段都应该被该应用程序忽略并且不会被销毁。

【讨论】:

【参考方案2】:

我不知道是否有应用程序可以执行此操作,但根据 JPEG 文件描述的标准,有一个名为 Comments 的字段,您可以在其中分配可以充当标签的值。

C#代码:

using System.Windows.Media.Imaging;
using System.IO;

...

FileStream fs = new FileStream(@"<img_path>", FileMode.Open, FileAccess.ReadWrite);
BitmapMetadata bmd = (BitmapMetadata)BitmapFrame.Create(fs).Metadata;
bmd.Comment = "Some Comment Here";

如果您正在寻找已经内置此功能的应用程序,那么我可能会推荐 Irfan View(打开图片,转到图像菜单,单击评论按钮)。

希望这会有所帮助。

【讨论】:

以上是关于如何使用 IPTC/EXIF 元数据对照片进行分类?的主要内容,如果未能解决你的问题,请参考以下文章

从 VNFaceObservation 对人脸进行分类

根据“人脸”元数据获取 PHAsset

对服装照片进行分类都有哪些好的功能? [关闭]

如何在 iOS9 中使用 PHPhotolibrary 将照片保存在带有元数据的相册中?

注解机制的分类使用及原理详解,开始自定义一个自己的注解

元数据相关