gpt4 book ai didi

java - 多部分 tiff 和 EXIF 元数据

转载 作者:行者123 更新时间:2023-11-30 12:00:52 27 4
gpt4 key购买 nike

在 tif 格式中,当您添加 EXIF 元数据时,它会创建一个新的 IFD(tif-direcory)并将 exif 元数据存储为字段。因此,在解析具有单个图像和 exif 数据的 tif 文件时很容易。但是你可以获得多部分 tiff,其中一个 tif 可以包含不止一个图像,问题是这些图像中的每一个都可以有 EXIF 数据吗?这会为每个图片元数据创建一个新的 IFD 吗?

那么IFD的排列是怎样的呢?

tif 规范没有详细说明,我知道当单个图像 tif 文件有 EXIF 数据时,EXIF 数据有一个偏移字段,所以我可以跳到那个位置并自己进行解析,但是Java Sanselan 库使我可以轻松访问 EXIF IFD 和字段,但是如果可以访问多个 EXIF IFD(每个图像一个),那么该库不会告诉我数据到哪个图像属于。

如果在一个多部分的 tif 文件中不能有超过 1 个 EXIF IFD,那么这将是微不足道的!换句话说:我需要去手动解析 exif 数据吗?因为我只需要执行此操作如果您可以将 EXIF 数据附加到多部分 tif 中的每个图像。

或者有人知道一个好的 Linux 应用程序可以让我将 EXIF 数据添加到 tif 文件,这样我就可以自己弄明白了吗?

最佳答案

回答您的问题:

can each of these images have EXIF data? Does this create a new IFD for each pictures metadata? What is is the arrangement of the IFD's then?

是的,这些图像中的每一个都可以有自己的 EXIF 数据。每个图像都与它自己的 IFD 相关,每个 EXIF 数据是相应图像 IFD 内的 SUB-IFD。

but the Java Sanselan library gives me easy access to the EXIF IFD and fields, but if it is possible to multiple EXIF IFD's (one for each image) then the library doesn't tell me to which image the data belongs.

我从未使用过 Sanselan,它是 Apache Imaging 的继任者,所以我猜这里可能发生了两件事:首先,如果您实际上可以将 EXIF 插入多页 TIFF,Sanselan 可能默认选择多页 TIFF 的第一页;或者可能有一个参数,您可以使用 setWorkingPage(int page) 之类的方法在某处设置,这就是我对“icafe”Java 图像库所做的。

以下是有关需要添加 EXIF 元数据时 TIFF 图像内部发生的情况的更详细信息:

对于单页 TIFF,有一个“主”IFD,它指定了有关包含在其中的图像的所有信息。当需要 EXIF 数据时,在主 IFD 中添加一个名为“EXIF_SUB_IFD”的特殊标签。该标签的值是相对于图像流开始的偏移地址。现在如果我们跳转到偏移量指定的地址,我们实际上会找到一个“子”IFD,其结构与包含所有 EXIF 数据的“主”IFD 完全相同。

上面提到的结构就像一个目录树,因此得名 IFD。然而这里有一个微妙的区别:主 IFD 应该包含实际图像数据,但 EXIF 子 IFD 不包含。其实还有一个GPS sub-IFD是和EXIF sub-IFD并列的,结构也是一样的。有趣的是,EXIF 的数据可以存储在 TIFF 图像流中的任何位置(只要它不破坏目录和图像数据的其他部分)。

现在介绍多页 TIFF。这些页面可以相关也可以不相关。每个页面 IFD 的最后 4 个字节指向另一个 IFD 的偏移量。他们有时聚集在一起作为一个“单一”文档,可能来自扫描仪。也就是说,每个页面本身就是一个“单个”页面 TIFF,它可以包含它自己的 EXIF 元数据,就像单个页面 TIFF 一样。

关于java - 多部分 tiff 和 EXIF 元数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1442218/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com