2016-10-25 9 views
0

Visual Studio 2012 (C 코드), 64 비트 Windows에서 LibTIFF를 사용하여 16 비트 회색조 TIF 이미지를 생성하고 있습니다. 다양한 타사 이미지 뷰어에서 결과 이미지를 열 수 있으며 잘 보입니다. 내 문제는 비록 나는 단지 XRESOLUTION을 쓸 수있는 것처럼 보인다. YRESOLUTION 및 RESOLUTIONUNIT에 쓰는 값은 헤더에 쓰지 않는 것 같습니다. I (예) 또는 인식 시스템 AsTiffTagViewer 소프트웨어 ImageJ에 내부에서 생성 된 이미지를 열면LIBTIFF가 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") 

는, I는 다음 헤더가 기술 참조 :

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): 

그래서 I 그 XRESOLUTION가 정상적으로 작성된 볼 수 그러나 YRESOLUTION 및 RESOLUTIONUNIT가 누락되었습니다.

내가 뭘 잘못하고 있는지 알기!

편집 : TIFFGetField를 사용하여 값을 검색하기 위해 TIFFSetField를 사용한 후에 시도했습니다. 검색된 값이 정확하기 때문에 TIFFClose 중에 물건을 썼을 때 손상된 것처럼 보입니다.

감사합니다.

답변

0

우리는 이것이 버그라고 판단했지만 이전 버전의 libTiff를 사용하고있었습니다. 는이 버그를 가지고 있지 않으며, 여기에서 찾을 수있는, 4.0.6 최신, 그것은 현재 유지되는 것 같다

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