如何从我的jpegs获取EXIF数据?

时间:2009-10-14 05:09:16

标签: iphone jpeg exif

我必须将日期和名称链接到我在包中包含的一些jpeg,或者可能从我自己的服务器下载到Documents文件夹。有没有办法轻松提取EXIF数据?

如果是这样,那么我将使用EXIF存储此信息。如果没有,那么我将不得不创建一个数据库或平面文件,将我的额外数据映射到图像文件。

请注意,这些不是iPhone拍摄的照片,而是通过UIImagePicker或沙盒外部提供的照片。这些是我自己在应用程序或下载到Docs文件夹中包含的照片。这里重点是轻松:

更容易

  • 从我的图片文件中读取EXIF文件
  • 有另一个跟踪的文件 图像文件和关联的 数据(可能是sqlite)

谢谢!

3 个答案:

答案 0 :(得分:3)

您可以尝试使用iphone-exif toolkit来提取数据。但是,它是GPL许可,如果您的应用是商业广告,您需要协商许可协议。如果那不可行,那么你可能想要使用外部元数据路径。

答案 1 :(得分:2)

实际EXIF数据以小TIFF文件的形式存储,并带有EXIF特定的TIFF标记,用于TIFF规范中没有主页的信息。当放置在JPEG文件(实际上是JFIF比特流)中时,它存储在JPEG APP1标记中,该标记将EXIF数据的总大小限制为略小于64KB。

找到APP1标记,确认它包含EXIF数据,然后用相当强力的编码解析出特定的EXIF标记集合应该不难。

你可以看到的一个例子是exiftool,它就是这样做的,并且用Perl和开放源代码以与Perl本身相同的术语编写。

答案 2 :(得分:1)

如果这些文件纯粹是在您自己的应用程序中使用,并且不会被用户在其他工具中重复使用,那么将数据作为XML / JSON存储在注释段0xFFFE中会有一些里程。如前所述,你只需要64k即可玩。

使用评论片段的好处在于它应该由图像编辑工具保存,快速访问(因为您不需要遍历存储EXIF数据的IFD块,您只需读取/写入带有文本字符串的文本字符串4字节类型/长度标题)并且在图形应用程序中是人类可读/可写的。

如果可行,我会避免将相关数据存储在数据库中,这样就不会让数据库与可用文件不同步。