LibTIFF не удалось сохранить YRESOLUTION и RESOLUTIONUNIT

Я использую LibTIFF с Visual Studio 2012 (код C), 64-битную Windows для получения 16-битного изображения TIF в градациях серого. Я могу открыть полученное изображение в различных сторонних программах просмотра изображений, и они выглядят хорошо. Однако моя проблема в том, что я могу писать только XRESOLUTION. Значение, которое я пишу для YRESOLUTION и RESOLUTIONUNIT, похоже, не попадает в заголовок.

TIFF* tif = TIFFOpen("c:\local\test.tif", "w");
TIFFSetField(tif, TIFFTAG_IMAGEWIDTH     , 2868);
TIFFSetField(tif, TIFFTAG_IMAGELENGTH    , 2048);
TIFFSetField(tif, TIFFTAG_BITSPERSAMPLE  , 16);
TIFFSetField(tif, TIFFTAG_RESOLUTIONUNIT,  RESUNIT_CENTIMETER); 
TIFFSetField(tif, TIFFTAG_XRESOLUTION    , 115.0);
TIFFSetField(tif, TIFFTAG_YRESOLUTION    , 115.0);

(That is all for SetFields.. I'll omit the subsequent loop 
and TIFFWriteScanLine calls for clarity, as the resulting 
image "looks correct")

Когда я открываю полученное изображение внутри ImageJ (например) или в программном обеспечении AWare Systems AsTiffTagViewer, я вижу следующие описанные заголовки:

ImageWidth      (1 Short): 2868
ImageLength     (1 Short): 2048
BitsPerSample   (1 Short): 16
Compression     (1 Short): LZW
Photometric     (1 Short): MinIsBlack
StripOffsets    (2048 Long): 16, 808, 1584, 2388, 3202, 4053, 4889, 5718,...
Orientation     (1 Short): TopLeft
SamplesPerPixel (1 Short): 1
RowsPerStrip    (1 Short): 1
StripByteCounts (2048 Long): 792, 776, 804, 814, 851, 836, 829, 855, 830,...
XResolution     (1 Rational): 115
0               (0 NoType): 
1               (2051838 NoType): 

Таким образом, я вижу, что XRESOLUTION был написан правильно, но YRESOLUTION и RESOLUTIONUNIT отсутствуют.

Есть идеи, что я делаю не так?

РЕДАКТИРОВАТЬ: я пытался после использования TIFFSetField, чтобы получить значения с помощью TIFFGetField. Полученные значения верны, поэтому кажется, что во время TIFFC как-то закрывается, когда что-то записывается, что они испорчены.

Спасибо!

1 ответ

Мы определили, что это ошибка, но мы использовали старую версию libTiff. Кажется, что в настоящее время поддерживается, 4.0.6 является последней, которая не имеет этой ошибки, и может быть найден здесь:

http://www.simplesystems.org/libtiff/

Другие вопросы по тегам