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 является последней, которая не имеет этой ошибки, и может быть найден здесь: