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

2024-06-06 17:06:57 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我尝试过使用tifffile.pyPIL的exif命令和IPTCInfo,而tifffile.py文件will得到的描述,我似乎仍然无法使用这些库解析文件中的“关键字”。在

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

编辑

除了来自abarnert的注释,我在一个文本编辑器中打开了一个TIFF文件,发现是包含“keywords”的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文件列出一些基本上是整数元组的标记。不过,我不知道该如何转换。建议?在


Tags: 文件数据pyformatrdf关键字lidescription
1条回答
网友
1楼 · 发布于 2024-06-06 17:06:57

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包装成Exif,但几乎所有的软件都接受它。在

Exif是向JFIF添加元数据的唯一常用方法(不包括DCF,这基本上与Exif相同),但它是向TIFF添加元数据的多种不同方法之一。IPTC是另一个问题,XMP、OME以及其他许多可能的组件也是如此。在

因此,一些TIFF文件使用与Exif包装的JFIF相同的规范来存储“关键字”,但其他文件则没有

What would be the best approach to parse these keywords?

你需要知道它们的存储格式。在

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

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

不管怎样,一旦你知道你要找的是哪种格式,你就可以找到一个可以处理它的库。(或者,如果它是基于XML的,只需使用tifffile将标记作为二进制数据读取,然后将其解析为UTF-8xml,这可能比查找其他库更容易。)

相关问题 更多 >