1

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

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

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

是不是更容易

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

谢谢!

4

4 回答 4

3

您可以尝试使用iphone-exif 工具包来提取数据。但是,它是 GPL 许可的,如果您的应用是商业应用,则需要协商许可协议。如果这不可行,那么您可能想要使用外部元数据路线。

于 2009-10-14T05:37:09.533 回答
3

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

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

您可以查看的一个示例是exiftool,它就是这样做的,它是用 Perl 和开源的,使用与 Perl 本身相同的术语。

于 2009-10-14T05:48:25.750 回答
1

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

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

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

于 2009-11-11T14:18:32.620 回答
0

我使用ExifTool

嵌入在我的应用程序中。工作一种享受。

于 2019-07-24T17:35:34.013 回答