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