diff --git a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImage10MetadataCleaner.java b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImage10MetadataCleaner.java index 791ffd13..2082eaf0 100644 --- a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImage10MetadataCleaner.java +++ b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImage10MetadataCleaner.java @@ -32,13 +32,14 @@ final class JPEGImage10MetadataCleaner { private final JPEGImageReader reader; - JPEGImage10MetadataCleaner(JPEGImageReader reader) { + JPEGImage10MetadataCleaner(final JPEGImageReader reader) { this.reader = reader; } - IIOMetadata cleanMetadata(final int imageIndex, final IIOMetadata imageMetadata, final List appSegments) throws IOException { + IIOMetadata cleanMetadata(final IIOMetadata imageMetadata) throws IOException { // We filter out pretty much everything from the stream.. // Meaning we have to read get *all APP segments* and re-insert into metadata. + List appSegments = reader.getAppSegments(JPEGImageReader.ALL_APP_MARKERS, null); // NOTE: There's a bug in the merging code in JPEGMetadata mergeUnknownNode that makes sure all "unknown" nodes are added twice in certain conditions.... ARGHBL... // DONE: 1: Work around @@ -109,7 +110,7 @@ final class JPEGImage10MetadataCleaner { IIOMetadataNode app0JFXX = new IIOMetadataNode("app0JFXX"); app0JFXX.setAttribute("extensionCode", String.valueOf(jfxxSegment.extensionCode)); - JFXXThumbnailReader thumbnailReader = new JFXXThumbnailReader(null, reader.getThumbnailReader(), imageIndex, -1, jfxxSegment); + JFXXThumbnailReader thumbnailReader = new JFXXThumbnailReader(null, reader.getThumbnailReader(), 0, 0, jfxxSegment); IIOMetadataNode jfifThumb; switch (jfxxSegment.extensionCode) { diff --git a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReader.java b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReader.java index 2940e5ff..0b798372 100644 --- a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReader.java +++ b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReader.java @@ -102,7 +102,7 @@ public class JPEGImageReader extends ImageReaderBase { final static boolean DEBUG = "true".equalsIgnoreCase(System.getProperty("com.twelvemonkeys.imageio.plugins.jpeg.debug")); /** Internal constant for referring all APP segments */ - private static final int ALL_APP_MARKERS = -1; + static final int ALL_APP_MARKERS = -1; /** Segment identifiers for the JPEG segments we care about reading. */ private static final Map> SEGMENT_IDENTIFIERS = createSegmentIds(); @@ -683,7 +683,7 @@ public class JPEGImageReader extends ImageReaderBase { } } - private List getAppSegments(final int marker, final String identifier) throws IOException { + List getAppSegments(final int marker, final String identifier) throws IOException { initHeader(); List appSegments = Collections.emptyList(); @@ -1036,9 +1036,7 @@ public class JPEGImageReader extends ImageReaderBase { metadataCleaner = new JPEGImage10MetadataCleaner(this); } - List appSegments = getAppSegments(JPEGImageReader.ALL_APP_MARKERS, null); - - return metadataCleaner.cleanMetadata(imageIndex, imageMetadata, appSegments); + return metadataCleaner.cleanMetadata(imageMetadata); } return imageMetadata;