以下是扫描所有标签时可以获得的关闭:
#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
}
Run Code Online (Sandbox Code Playgroud)
请注意,您必须考虑到某些标记将出现两次(LONG和SHORT版本),但其中只有一个具有值.可以在包含的标头(TIFFDirectory结构)中查找要使用的正确类型.
还有关于如何阅读标签的其他信息,但这至少会让你遍历所有标签(标准标签).如果卡住,请参阅tif_dirinfo.c以获取指示.