From: cristy Date: Tue, 3 Jun 2014 00:52:29 +0000 (+0000) Subject: (no commit message) X-Git-Tag: 7.0.1-0~2251 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ac7fec2e29a4851fe576341688d7903e8bdd3dd7;p=imagemagick --- diff --git a/coders/tiff.c b/coders/tiff.c index 5bf4489fb..400f9f267 100644 --- a/coders/tiff.c +++ b/coders/tiff.c @@ -1009,20 +1009,24 @@ RestoreMSCWarning (void) SetImageProperty(image,"tiff:endian",TIFFIsBigEndian(tiff) == 0 ? "lsb" : "msb",exception); #endif - (void) TIFFGetFieldDefaulted(tiff,TIFFTAG_COMPRESSION,&compress_tag); - (void) TIFFGetFieldDefaulted(tiff,TIFFTAG_ORIENTATION,&orientation); - (void) TIFFGetFieldDefaulted(tiff,TIFFTAG_IMAGEWIDTH,&width); - (void) TIFFGetFieldDefaulted(tiff,TIFFTAG_IMAGELENGTH,&height); - (void) TIFFGetFieldDefaulted(tiff,TIFFTAG_FILLORDER,&endian); - (void) TIFFGetFieldDefaulted(tiff,TIFFTAG_PLANARCONFIG,&interlace); - (void) TIFFGetFieldDefaulted(tiff,TIFFTAG_BITSPERSAMPLE,&bits_per_sample); - (void) TIFFGetFieldDefaulted(tiff,TIFFTAG_SAMPLEFORMAT,&sample_format); + if ((TIFFGetField(tiff,TIFFTAG_IMAGEWIDTH,&width) != 1) || + (TIFFGetField(tiff,TIFFTAG_IMAGELENGTH,&height) != 1) || + (TIFFGetFieldDefaulted(tiff,TIFFTAG_COMPRESSION,&compress_tag) != 1) || + (TIFFGetFieldDefaulted(tiff,TIFFTAG_FILLORDER,&endian) != 1) || + (TIFFGetFieldDefaulted(tiff,TIFFTAG_PLANARCONFIG,&interlace) != 1) || + (TIFFGetFieldDefaulted(tiff,TIFFTAG_SAMPLESPERPIXEL,&samples_per_pixel) != 1) || + (TIFFGetFieldDefaulted(tiff,TIFFTAG_BITSPERSAMPLE,&bits_per_sample) != 1) || + (TIFFGetFieldDefaulted(tiff,TIFFTAG_SAMPLEFORMAT,&sample_format) != 1) || + (TIFFGetFieldDefaulted(tiff,TIFFTAG_MINSAMPLEVALUE,&min_sample_value) != 1) || + (TIFFGetFieldDefaulted(tiff,TIFFTAG_MAXSAMPLEVALUE,&max_sample_value) != 1) || + (TIFFGetFieldDefaulted(tiff,TIFFTAG_PHOTOMETRIC,&photometric) != 1)) + { + TIFFClose(tiff); + ThrowReaderException(CorruptImageError,"ImproperImageHeader"); + } if (sample_format == SAMPLEFORMAT_IEEEFP) (void) SetImageProperty(image,"quantum:format","floating-point", exception); - (void) TIFFGetFieldDefaulted(tiff,TIFFTAG_MINSAMPLEVALUE,&min_sample_value); - (void) TIFFGetFieldDefaulted(tiff,TIFFTAG_MAXSAMPLEVALUE,&max_sample_value); - (void) TIFFGetFieldDefaulted(tiff,TIFFTAG_PHOTOMETRIC,&photometric); switch (photometric) { case PHOTOMETRIC_MINISBLACK: @@ -1052,6 +1056,12 @@ RestoreMSCWarning (void) SetImageProperty(image,"tiff:photometric","CIELAB",exception); break; } + case PHOTOMETRIC_LOGL: + case PHOTOMETRIC_LOGLUV: + { + (void) TIFFSetField(tiff,TIFFTAG_SGILOGDATAFMT,SGILOGDATAFMT_FLOAT); + break; + } case PHOTOMETRIC_SEPARATED: { (void) SetImageProperty(image,"tiff:photometric","separated",exception); @@ -1120,6 +1130,7 @@ RestoreMSCWarning (void) TIFFGetFieldDefaulted(tiff,TIFFTAG_YPOSITION,&y_position); image->page.x=(ssize_t) ceil(x_position*x_resolution-0.5); image->page.y=(ssize_t) ceil(y_position*y_resolution-0.5); + (void) TIFFGetFieldDefaulted(tiff,TIFFTAG_ORIENTATION,&orientation); image->orientation=(OrientationType) orientation; chromaticity=(float *) NULL; (void) TIFFGetField(tiff,TIFFTAG_WHITEPOINT,&chromaticity);