From d4e34d610993c11556a4e54ecf6fdf7ff8b07d70 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Tue, 25 Aug 2015 14:13:35 +0200 Subject: [PATCH] TMI #170 Fix General CMM error517/LCMS error 13 (Ignore incompatible ICC profile) --- .../imageio/plugins/tiff/TIFFImageReader.java | 19 ++++++--- .../plugins/tiff/TIFFImageReaderTest.java | 40 +++++++++++-------- 2 files changed, 38 insertions(+), 21 deletions(-) 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 ef63f25e..781df46a 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 @@ -61,6 +61,7 @@ import javax.imageio.spi.ImageReaderSpi; import javax.imageio.spi.ServiceRegistry; import javax.imageio.stream.ImageInputStream; import java.awt.*; +import java.awt.color.CMMException; import java.awt.color.ColorSpace; import java.awt.color.ICC_Profile; import java.awt.image.*; @@ -1562,14 +1563,22 @@ public class TIFFImageReader extends ImageReaderBase { return value; } - public ICC_Profile getICCProfile() { + private ICC_Profile getICCProfile() { Entry entry = currentIFD.getEntryById(TIFF.TAG_ICC_PROFILE); - if (entry == null) { - return null; + + if (entry != null) { + byte[] value = (byte[]) entry.getValue(); + ICC_Profile profile = ICC_Profile.getInstance(value); + + try { + return ColorSpaces.validateProfile(profile); + } + catch (CMMException ignore) { + processWarningOccurred("Ignoring broken/incompatible ICC profile: " + ignore.getMessage()); + } } - byte[] value = (byte[]) entry.getValue(); - return ICC_Profile.getInstance(value); + return null; } // TODO: Tiling support 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 0dbda095..f5e02935 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 @@ -84,6 +84,7 @@ public class TIFFImageReaderTest extends ImageReaderAbstractTest