#300 TIFF old style JPEG inconsistent metadata

This commit is contained in:
Harald Kuhr
2016-12-12 21:26:31 +01:00
parent 3c47070d70
commit 753afd0c3d
3 changed files with 33 additions and 3 deletions
@@ -1036,7 +1036,7 @@ public final class TIFFImageReader extends ImageReaderBase {
// TODO: If we have non-standard reference B/W or yCbCr coefficients,
// we might still have to do extra color space conversion...
if (needsCSConversion == null) {
needsCSConversion = needsCSConversion(interpretation, jpegReader.getImageMetadata(0));
needsCSConversion = needsCSConversion(interpretation, readJPEGMetadataSafe(jpegReader));
}
if (!needsCSConversion) {
@@ -1174,7 +1174,7 @@ public final class TIFFImageReader extends ImageReaderBase {
jpegParam.setSourceSubsampling(xSub, ySub, 0, 0);
if (needsCSConversion == null) {
needsCSConversion = needsCSConversion(interpretation, jpegReader.getImageMetadata(0));
needsCSConversion = needsCSConversion(interpretation, readJPEGMetadataSafe(jpegReader));
}
if (!needsCSConversion) {
@@ -1279,7 +1279,7 @@ public final class TIFFImageReader extends ImageReaderBase {
Point offset = new Point(col - srcRegion.x, row - srcRegion.y);
if (needsCSConversion == null) {
needsCSConversion = needsCSConversion(interpretation, jpegReader.getImageMetadata(0));
needsCSConversion = needsCSConversion(interpretation, readJPEGMetadataSafe(jpegReader));
}
if (!needsCSConversion) {
@@ -1345,6 +1345,17 @@ public final class TIFFImageReader extends ImageReaderBase {
return destination;
}
private IIOMetadata readJPEGMetadataSafe(final ImageReader jpegReader) throws IOException {
try {
return jpegReader.getImageMetadata(0);
}
catch (IIOException e) {
processWarningOccurred("Could not read metadata metadata JPEG compressed TIFF: " + e.getMessage() + " colors may look incorrect");
return null;
}
}
private boolean needsCSConversion(final int photometricInterpretation, final IIOMetadata imageMetadata) throws IOException {
if (imageMetadata == null) {
// Assume we're ok