2016-10-25 2 views
0

Ich benutze LibTIFF mit Visual Studio 2012 (C-Code), 64-Bit-Windows, um ein 16-Bit-Graustufen-TIF-Bild zu erzeugen. Ich kann das resultierende Bild in einer Vielzahl von Drittanbieter-Bildbetrachtern öffnen und sie sehen gut aus. Mein Problem ist jedoch, dass ich nur in der Lage bin, XRESOLUTION zu schreiben. Der Wert, den ich für YRESOLUTION und RESOLUTIONUNIT schreibe, scheint es nicht in den Header zu schaffen.LibTIFF nicht speichern YRESOLUTION und AuflösungUNIT

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

Wenn ich das resultierende Bild in ImageJ (zum Beispiel) öffnen oder in Aware Systeme AsTiffTagViewer Software, sehe ich die folgenden Header beschrieben:

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

So kann ich das xresolution sehen war richtig geschrieben, aber YESOLUTION und AUFLÖSUNGUNIT fehlen.

Irgendeine Idee, was ich falsch mache?

EDIT: Ich versuchte nach der Verwendung von TIFFSetField, um die Werte mit TIFFGetField abrufen. Die abgerufenen Werte sind korrekt, so scheint es, dass während TIFFClose, wenn Dinge ausgeschrieben werden, diese irgendwie beschädigt werden.

Danke!

Antwort

0

Wir haben festgestellt, dass dies ein Fehler war, aber wir benutzten eine alte Version von libTiff. Es scheint, es ist zur Zeit beibehalten, 4.0.6 ist die letzte, die nicht diesen Fehler hat, und kann hier gefunden werden:

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

Verwandte Themen