Наконец-то я нашел решение. Руководство (TIFFGetField(3tiff)) говорит все, что нам нужно. См. Сеанс AUTOREGTERTERED TAGS. Следующее - скопированное.
AUTOREGISTERED TAGS Если вы не можете найти тег в таблице выше, что означает, что это неподдерживаемый тег и не непосредственно поддерживается LibTIFF библиотекой (3TIFF). Вы все равно сможете прочитать значение , если вы знаете тип данных этого тега. Например, если вы хотите прочитать LONG значение из тега 33424 и ASCII строки из в 36867 тегов вы можете использовать следующий код:
uint32 count;
void *data;
TIFFGetField(tiff, 33424, &count, &data);
printf("Tag %d: %d, count %d0", 33424, *(uint32 *)data, count);
TIFFGetField(tiff, 36867, &count, &data);
printf("Tag %d: %s, count %d0", 36867, (char *)data, count);
Например, мне нужно прочитать тег в два раза, так что я использовал следующий код (но я не проверял):
tiff *tif = TIFFOpen("ex_file.tif", "rc"); // read tif
static ttag_t const TIFFTAG_SOMETAG = 34362; // some custom tag
if(tif != nullptr) // if the file is open
{
uint count; // get count
double *data; // get data
if(TIFFGetField(tif, TIFFTAG_SOMETAG, &count, &data) == 1) // read tag
throw std::logic_error("the tag does not exist.");
// print the values (caution: count is in bytes)
for(int index = 0; index < count/sizeof(double); ++index)
std::cout << data[index];
TIFFClose(tif); // close the file
}
else
throw std::runtime_error("cannot open the file");
Если вы не можете найти любую UpToDate библиотеку, писать TIFF информации читателя с нуля не так уж трудно; документы довольно просты. (Я сделал один год назад, я посмотрю, смогу ли я найти источник, но, вероятно, сейчас он устарел). –