gpt4 book ai didi

python - 从 Tiff 图像中获取描述/关键字?

转载 作者:行者123 更新时间:2023-11-28 17:50:20 46 4
gpt4 key购买 nike

我有许多 TIFF 文件,其中包含描述和“关键字”(正如 OS X 在文件检查器中对它们的称呼)。但是,我很难从图像中收集这些元数据。

我试过使用 tifffile.py , PIL的 exif 命令和 IPTCInfo ,虽然 tifffile.py 得到描述,但我似乎仍然无法使用这些库中的任何一个从文件中解析“关键字”。

TIFF 和 JPEG 是否使用不同的“规范”存储关键字?解析这些关键字的最佳方法是什么?

编辑

根据 abarnert 的评论,我在文本编辑器中打开了一个 TIFF 文件,发现 包含“关键字”的 XML 数据。以下片段:

...
<rdf:Description rdf:about=""
xmlns:dc="http://purl.org/dc/elements/1.1/">
<dc:description>
<rdf:Alt>
<rdf:li xml:lang="x-default">OLYMPUS DIGITAL CAMERA</rdf:li>
</rdf:Alt>
</dc:description>
<dc:format>image/tiff</dc:format>
<dc:subject>
<rdf:Bag>
<rdf:li>Foo</rdf:li>
<rdf:li>Bar</rdf:li>
<rdf:li>A long keyword</rdf:li>
</rdf:Bag>
</dc:subject>
</rdf:Description>
...

看起来这可以存储为二进制表示; tifffile.py 列出了一些本质上是整数元组的标签。但是,我不确定如何转换它。有什么建议吗?

最佳答案

Are keywords stored using a different "specification" for TIFFs than for JPEGs?

好吧,这取决于。

TIFF 容器只有一组非常有限的元数据标签,并且无法指定任意关键字。

JPEG 根本不是一种容器类型;它是一种图像压缩编解码器,可用于各种不同的容器,包括 TIFF。但通常当您说“JPEG 文件”时,您指的是 JFIF,它是 JPEG 组指定的一种容器格式,并且与 TIFF 一样,JFIF 的元数据标签集非常有限。

Exif 是另一种容器格式,就结构而言与 TIFF 相同,但它定义了新标签,明确用于元数据,这意味着您可以简单地将 TIFF 包装为 Exif,它仍然是合法的 TIFF,并且有一点偷偷摸摸你也可以用一种不太合法的 JFIF 的方式将 JFIF 包装为 Exif,但几乎所有软件都接受它。

Exif 是向 JFIF 添加元数据的唯一常用方法(不包括 DCF,它与 Exif 基本相同),但它是向 TIFF 添加元数据的多种不同方法之一。 IPTC 是另一个,XMP、OME 可能还有很多其他的。

因此,一些 TIFF 文件使用与 JFIF-wrapped-in-Exif 相同的规范存储“关键字”,但其他文件则不然。

What would be the best approach to parse these keywords?

那么,您需要知道它们的存储格式。

不用说,PIL 的 exif 命令只支持 Exif,IPTCInfo 只支持 IPTC,而 tifffile 主要支持……好吧,各种不同的东西。

我相信 tifffile.py 可以存储未知标签类型是原始二进制数据,您可以遍历这些数据并查看您遗漏了什么。这将至少涵盖所有使用 TIFF 容器结构的扩展。如果您在那里找不到关键字,那么……至少可以排除许多常见格式。

无论如何,一旦您知道要寻找哪种格式,就可以寻找可以处理它的库。 (或者,如果它是基于 XML 的标签之一,只需使用 tifffile 将标签读取为二进制数据,然后将其解析为 UTF-8 XML,这可能比查找不同的库更容易。)

关于python - 从 Tiff 图像中获取描述/关键字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11314894/

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