gpt4 book ai didi

c++ - LibTIFF:从 TIFF 图像中提取所有标签

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:17:48 24 4
gpt4 key购买 nike

我目前正在开展一个项目,该项目要求我将一个 TIFF 图像拆分为一个包含所有标签的文件和一个包含所有图像数据的文件,并从这些文件重建一个 TIFF 图像。唯一的问题是 LibTIFF 似乎没有提供从图像中​​获取所有标签的简单方法。我试过使用 TIFFGetTagListCount 然后使用 TIFFGetField 来检索标签,但这只返回标签的一小部分。我已经开始推出我自己的版本,但我只是想仔细检查并确保我没有忽略某些东西,因为这似乎是一个非常明显的功能,应该包含在库中。

最佳答案

这是扫描所有标签可以获得的关闭数:

 #include "LibTIFF/tif_dir.h"
...

TIFFDirectory *td = &tif->tif_dir;

for (int fi = 0, nfi = tif->tif_nfields; nfi > 0; nfi--, fi++) {
const TIFFFieldInfo* fip = tif->tif_fieldinfo[fi];

// test if tag value is set
// (lifted directly form LibTiff _TIFFWriteDirectory)

if( fip->field_bit == FIELD_CUSTOM ) {
int ci, is_set = FALSE;

for( ci = 0; ci < td->td_customValueCount; ci++ )
is_set |= (td->td_customValues[ci].info == fip);

if( !is_set )
continue;
} else if(!TIFFFieldSet(tif, fip->field_bit))
continue;

// else: process the fip->field_tag


}

请注意,您必须考虑到某些标签会出现两次(LONG 和 SHORT 版本),但其中只有一个具有值(value)。可以在包含的 header (TIFFDirectory 结构)中查找要使用的正确类型。

还有其他关于如何阅读标签的问题,但这至少会让你遍历所有标签(标准标签)。如果您遇到困难,请参阅 tif_dirinfo.c 以获取指示。

关于c++ - LibTIFF:从 TIFF 图像中提取所有标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1904843/

24 4 0