diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReader.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReader.java index ba4d02d8..9f8c341d 100755 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReader.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReader.java @@ -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 diff --git a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReaderTest.java b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReaderTest.java index 901dab2a..36b5b6cb 100644 --- a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReaderTest.java +++ b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReaderTest.java @@ -250,6 +250,25 @@ public class TIFFImageReaderTest extends ImageReaderAbstractTest