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!