From 47a18c63d7dd5140774cf47d24797ec67c586712 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Mon, 30 Mar 2015 14:21:36 +0200 Subject: [PATCH 001/182] TMI-26: TIFF writer support with JPEG encoder --- .../imageio/stream/SubImageOutputStream.java | 55 +++++++++++++++++++ .../plugins/tiff/TIFFImageWriteParam.java | 28 +++++++--- .../imageio/plugins/tiff/TIFFImageWriter.java | 40 +++++++++++--- 3 files changed, 107 insertions(+), 16 deletions(-) create mode 100644 imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/stream/SubImageOutputStream.java diff --git a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/stream/SubImageOutputStream.java b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/stream/SubImageOutputStream.java new file mode 100644 index 00000000..372e5758 --- /dev/null +++ b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/stream/SubImageOutputStream.java @@ -0,0 +1,55 @@ +package com.twelvemonkeys.imageio.stream; + +import javax.imageio.stream.ImageOutputStream; +import javax.imageio.stream.ImageOutputStreamImpl; +import java.io.IOException; + +/** + * SubImageOutputStream. + * + * @author Harald Kuhr + * @author last modified by $Author: harald.kuhr$ + * @version $Id: SubImageOutputStream.java,v 1.0 30/03/15 harald.kuhr Exp$ + */ +public class SubImageOutputStream extends ImageOutputStreamImpl { + private final ImageOutputStream stream; + + public SubImageOutputStream(final ImageOutputStream stream) { + this.stream = stream; + } + + @Override + public void write(int b) throws IOException { + stream.write(b); + } + + @Override + public void write(byte[] b, int off, int len) throws IOException { + stream.write(b, off, len); + } + + @Override + public int read() throws IOException { + return stream.read(); + } + + @Override + public int read(byte[] b, int off, int len) throws IOException { + return stream.read(b, off, len); + } + + @Override + public boolean isCached() { + return stream.isCached(); + } + + @Override + public boolean isCachedMemory() { + return stream.isCachedMemory(); + } + + @Override + public boolean isCachedFile() { + return stream.isCachedFile(); + } +} diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageWriteParam.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageWriteParam.java index 69eba0c1..637ea6f3 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageWriteParam.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageWriteParam.java @@ -39,16 +39,20 @@ import java.util.Locale; * @version $Id: TIFFImageWriteParam.java,v 1.0 18.09.13 12:47 haraldk Exp$ */ public final class TIFFImageWriteParam extends ImageWriteParam { - // TODO: Support no compression (None/1) - // TODO: Support ZLIB (/Deflate) compression (8) - // TODO: Support PackBits compression (32773) - // TODO: Support JPEG compression (7) - // TODO: Support CCITT Modified Huffman compression (2) - // TODO: Support LZW compression (5)? + // TODO: Support CCITT Modified Huffman compression (2) BASELINE!! + // TODO: Support CCITT T.4 (3) + // TODO: Support CCITT T.6 (4) // TODO: Support JBIG compression via ImageIO plugin/delegate? // TODO: Support JPEG2000 compression via ImageIO plugin/delegate? // TODO: Support tiling - // TODO: Support predictor. See TIFF 6.0 Specification, Section 14: "Differencing Predictor", page 64. + // TODO: Support OPTIONAL predictor. See TIFF 6.0 Specification, Section 14: "Differencing Predictor", page 64. + + // DONE: + // Support no compression (None/1) + // Support ZLIB (/Deflate) compression (8) + // Support PackBits compression (32773) + // Support LZW compression (5)? + // Support JPEG compression (7) TIFFImageWriteParam() { this(Locale.getDefault()); @@ -59,7 +63,12 @@ public final class TIFFImageWriteParam extends ImageWriteParam { // NOTE: We use the same spelling/casing as the JAI equivalent to be as compatible as possible // See: http://download.java.net/media/jai-imageio/javadoc/1.1/com/sun/media/imageio/plugins/tiff/TIFFImageWriteParam.html - compressionTypes = new String[] {"None", /* "CCITT RLE", "CCITT T.4", "CCITT T.6", */ "LZW", "JPEG", "ZLib", "PackBits", "Deflate", /* "EXIF JPEG" */ }; + compressionTypes = new String[] { + "None", + null, null, null,/* "CCITT RLE", "CCITT T.4", "CCITT T.6", */ + "LZW", "JPEG", "ZLib", "PackBits", "Deflate", + null/* "EXIF JPEG" */ // A well-defined form of "Old-style JPEG", no tables/process, only 513 (offset) and 514 (length) + }; compressionType = compressionTypes[0]; canWriteCompressed = true; } @@ -102,6 +111,9 @@ public final class TIFFImageWriteParam extends ImageWriteParam { else if (param.getCompressionType().equals("JPEG")) { return TIFFExtension.COMPRESSION_JPEG; } +// else if (param.getCompressionType().equals("EXIF JPEG")) { +// return TIFFExtension.COMPRESSION_OLD_JPEG; +// } throw new IllegalArgumentException(String.format("Unsupported compression type: %s", param.getCompressionType())); } diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageWriter.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageWriter.java index 93eac986..9f672cfb 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageWriter.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageWriter.java @@ -35,6 +35,7 @@ import com.twelvemonkeys.imageio.metadata.Entry; import com.twelvemonkeys.imageio.metadata.exif.EXIFWriter; import com.twelvemonkeys.imageio.metadata.exif.Rational; import com.twelvemonkeys.imageio.metadata.exif.TIFF; +import com.twelvemonkeys.imageio.stream.SubImageOutputStream; import com.twelvemonkeys.imageio.util.IIOUtil; import com.twelvemonkeys.io.enc.EncoderStream; import com.twelvemonkeys.io.enc.PackBitsEncoder; @@ -157,10 +158,11 @@ public final class TIFFImageWriter extends ImageWriterBase { entries.add(new TIFFEntry(TIFF.TAG_EXTRA_SAMPLES, TIFFBaseline.EXTRASAMPLE_UNSPECIFIED)); } } + // Write compression field from param or metadata int compression = TIFFImageWriteParam.getCompressionType(param); entries.add(new TIFFEntry(TIFF.TAG_COMPRESSION, compression)); - // TODO: Let param control + // TODO: Let param control predictor switch (compression) { case TIFFExtension.COMPRESSION_ZLIB: case TIFFExtension.COMPRESSION_DEFLATE: @@ -169,7 +171,9 @@ public final class TIFFImageWriter extends ImageWriterBase { default: } - int photometric = getPhotometricInterpretation(colorModel); + int photometric = compression == TIFFExtension.COMPRESSION_JPEG ? + TIFFExtension.PHOTOMETRIC_YCBCR : + getPhotometricInterpretation(colorModel); entries.add(new TIFFEntry(TIFF.TAG_PHOTOMETRIC_INTERPRETATION, photometric)); if (photometric == TIFFBaseline.PHOTOMETRIC_PALETTE && colorModel instanceof IndexColorModel) { @@ -179,9 +183,9 @@ public final class TIFFImageWriter extends ImageWriterBase { else { entries.add(new TIFFEntry(TIFF.TAG_SAMPLES_PER_PIXEL, numComponents)); - // TODO: What is the default TIFF color space? + // Note: Assuming sRGB to be the default RGB interpretation ColorSpace colorSpace = colorModel.getColorSpace(); - if (colorSpace instanceof ICC_ColorSpace) { + if (colorSpace instanceof ICC_ColorSpace && !colorSpace.isCS_sRGB()) { entries.add(new TIFFEntry(TIFF.TAG_ICC_PROFILE, ((ICC_ColorSpace) colorSpace).getProfile().getData())); } } @@ -228,8 +232,26 @@ public final class TIFFImageWriter extends ImageWriterBase { } // TODO: Create compressor stream per Tile/Strip - // Write image data - writeImageData(createCompressorStream(renderedImage, param), renderedImage, numComponents, bandOffsets, bitOffsets); + if (compression == TIFFExtension.COMPRESSION_JPEG) { + Iterator writers = ImageIO.getImageWritersByFormatName("JPEG"); + if (!writers.hasNext()) { + // This can only happen if someone deliberately uninstalled it + throw new IIOException("No JPEG ImageWriter found!"); + } + + ImageWriter jpegWriter = writers.next(); + try { + jpegWriter.setOutput(new SubImageOutputStream(imageOutput)); + jpegWriter.write(renderedImage); + } + finally { + jpegWriter.dispose(); + } + } + else { + // Write image data + writeImageData(createCompressorStream(renderedImage, param), renderedImage, numComponents, bandOffsets, bitOffsets); + } // TODO: Update IFD0-pointer, and write IFD if (compression != TIFFBaseline.COMPRESSION_NONE) { @@ -304,7 +326,8 @@ public final class TIFFImageWriter extends ImageWriterBase { output.length: 12600399 */ - // TODO: Use predictor only by default for -PackBits,- LZW and ZLib/Deflate, unless explicitly disabled (ImageWriteParam) + // Use predictor by default for LZW and ZLib/Deflate + // TODO: Unless explicitly disabled in TIFFImageWriteParam int compression = TIFFImageWriteParam.getCompressionType(param); OutputStream stream; @@ -321,7 +344,7 @@ public final class TIFFImageWriter extends ImageWriterBase { case TIFFExtension.COMPRESSION_ZLIB: case TIFFExtension.COMPRESSION_DEFLATE: - int deflateSetting = Deflater.BEST_SPEED; // This is consistent with default compression quality being 1.0 and 0 meaning max compression.... + int deflateSetting = Deflater.BEST_SPEED; // This is consistent with default compression quality being 1.0 and 0 meaning max compression... if (param.getCompressionMode() == ImageWriteParam.MODE_EXPLICIT) { // TODO: Determine how to interpret compression quality... // Docs says: @@ -740,4 +763,5 @@ public final class TIFFImageWriter extends ImageWriterBase { TIFFImageReader.showIt(read, output.getName()); } + } From 3a496c5d792a637e42a2f31b66fb0bd1be5161d0 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Mon, 30 Mar 2015 16:27:39 +0200 Subject: [PATCH 002/182] Code clean up. --- .../main/java/com/twelvemonkeys/imageio/spi/ProviderInfo.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/spi/ProviderInfo.java b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/spi/ProviderInfo.java index a03fa076..61048791 100644 --- a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/spi/ProviderInfo.java +++ b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/spi/ProviderInfo.java @@ -73,7 +73,7 @@ public class ProviderInfo { return name.startsWith("com.twelvemonkeys") ? "TwelveMonkeys" : name; } - private String fakeVersion(Package pPackage) { + private String fakeVersion(final Package pPackage) { String name = pPackage.getName(); return name.startsWith("com.twelvemonkeys") ? "DEV" : "Unspecified"; } From 6e92a83fffd9107974114516ee997e999efc0f63 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Mon, 30 Mar 2015 16:28:42 +0200 Subject: [PATCH 003/182] Minor changes. --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 325fdef4..9379173d 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,9 @@ -## Background +## About -TwelveMonkeys ImageIO is a collection of plug-ins for Java's ImageIO. +TwelveMonkeys ImageIO is a collection of plugins and extensions for Java's ImageIO. These plugins extends the number of image file formats supported in Java, using the javax.imageio.* package. -The main purpose of this project is to provide support for formats not covered by the JDK itself. +The main purpose of this project is to provide support for formats not covered by the JRE itself. Support for formats is important, both to be able to read data found "in the wild", as well as to maintain access to data in legacy formats. From 9c3cff04e49654bc3bcbcbc74ef8b4d5eb927fbf Mon Sep 17 00:00:00 2001 From: Tyler Date: Wed, 1 Apr 2015 14:31:12 -0700 Subject: [PATCH 004/182] Encountered issue where an SVGImageReader instance that was used to read multiple SVG images was only returning the first image. This commit includes a test case and a proposed fix. --- .../imageio/plugins/svg/SVGImageReader.java | 3 ++- .../plugins/svg/SVGImageReaderTestCase.java | 22 +++++++++++++++++++ .../src/test/resources/svg/blue-square.svg | 7 ++++++ .../src/test/resources/svg/red-square.svg | 7 ++++++ 4 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 imageio/imageio-batik/src/test/resources/svg/blue-square.svg create mode 100644 imageio/imageio-batik/src/test/resources/svg/red-square.svg diff --git a/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReader.java b/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReader.java index 9071994b..90ddd370 100755 --- a/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReader.java +++ b/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReader.java @@ -74,7 +74,7 @@ import java.util.Map; * @see batik-dev */ public class SVGImageReader extends ImageReaderBase { - private Rasterizer rasterizer = new Rasterizer(); + private Rasterizer rasterizer = null; /** * Creates an {@code SVGImageReader}. @@ -100,6 +100,7 @@ public class SVGImageReader extends ImageReaderBase { if (imageInput != null) { TranscoderInput input = new TranscoderInput(IIOUtil.createStreamAdapter(imageInput)); + rasterizer = new Rasterizer(); rasterizer.setInput(input); } } diff --git a/imageio/imageio-batik/src/test/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReaderTestCase.java b/imageio/imageio-batik/src/test/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReaderTestCase.java index 8324c311..e6738a11 100755 --- a/imageio/imageio-batik/src/test/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReaderTestCase.java +++ b/imageio/imageio-batik/src/test/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReaderTestCase.java @@ -31,9 +31,13 @@ package com.twelvemonkeys.imageio.plugins.svg; import com.twelvemonkeys.imageio.util.ImageReaderAbstractTestCase; import org.junit.Ignore; import org.junit.Test; +import static org.junit.Assert.assertEquals; +import javax.imageio.ImageReadParam; +import javax.imageio.ImageReader; import javax.imageio.spi.ImageReaderSpi; import java.awt.*; +import java.awt.image.BufferedImage; import java.awt.image.ImagingOpException; import java.io.IOException; import java.util.Arrays; @@ -110,4 +114,22 @@ public class SVGImageReaderTestCase extends ImageReaderAbstractTestCase + + + + + \ No newline at end of file diff --git a/imageio/imageio-batik/src/test/resources/svg/red-square.svg b/imageio/imageio-batik/src/test/resources/svg/red-square.svg new file mode 100644 index 00000000..2ae064db --- /dev/null +++ b/imageio/imageio-batik/src/test/resources/svg/red-square.svg @@ -0,0 +1,7 @@ + + + + + + From 2c8f0f5add687c236f091ad193ff43e492c7db1f Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Tue, 7 Apr 2015 11:05:14 +0200 Subject: [PATCH 005/182] TMI-125: Clean up after merge + fix Spi issue. --- .../imageio/plugins/svg/SVGImageReader.java | 127 +++++++++--------- .../plugins/svg/SVGImageReaderSpi.java | 33 +++-- .../plugins/svg/SVGImageReaderTestCase.java | 21 +-- 3 files changed, 93 insertions(+), 88 deletions(-) diff --git a/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReader.java b/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReader.java index 90ddd370..3a1172d7 100755 --- a/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReader.java +++ b/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReader.java @@ -74,18 +74,19 @@ import java.util.Map; * @see batik-dev */ public class SVGImageReader extends ImageReaderBase { - private Rasterizer rasterizer = null; + private Rasterizer rasterizer; /** * Creates an {@code SVGImageReader}. * * @param pProvider the provider */ - public SVGImageReader(ImageReaderSpi pProvider) { + public SVGImageReader(final ImageReaderSpi pProvider) { super(pProvider); } protected void resetMembers() { + rasterizer = new Rasterizer(); } @Override @@ -100,7 +101,6 @@ public class SVGImageReader extends ImageReaderBase { if (imageInput != null) { TranscoderInput input = new TranscoderInput(IIOUtil.createStreamAdapter(imageInput)); - rasterizer = new Rasterizer(); rasterizer.setInput(input); } } @@ -135,7 +135,7 @@ public class SVGImageReader extends ImageReaderBase { try { processImageStarted(pIndex); - rasterizer.mTranscoderInput.setURI(baseURI); + rasterizer.transcoderInput.setURI(baseURI); BufferedImage image = rasterizer.getImage(); Graphics2D g = destination.createGraphics(); @@ -253,31 +253,29 @@ public class SVGImageReader extends ImageReaderBase { */ private class Rasterizer extends SVGAbstractTranscoder /*ImageTranscoder*/ { - BufferedImage mImage = null; - private TranscoderInput mTranscoderInput; - private float mDefaultWidth; - private float mDefaultHeight; - private boolean mInit = false; - private SVGOMDocument mDocument; - private String mURI; - private GraphicsNode mGVTRoot; - private TranscoderException mException; - private BridgeContext mContext; + BufferedImage image = null; + private TranscoderInput transcoderInput; + private float defaultWidth; + private float defaultHeight; + private boolean initialized = false; + private SVGOMDocument document; + private String uri; + private GraphicsNode gvtRoot; + private TranscoderException exception; + private BridgeContext context; - public BufferedImage createImage(int w, int h) { - return ImageUtil.createTransparent(w, h);//, BufferedImage.TYPE_INT_ARGB); + public BufferedImage createImage(final int width, final int height) { + return ImageUtil.createTransparent(width, height);//, BufferedImage.TYPE_INT_ARGB); } // This is cheating... We don't fully transcode after all - protected void transcode(Document document, String uri, TranscoderOutput output) throws TranscoderException { + protected void transcode(Document document, final String uri, final TranscoderOutput output) throws TranscoderException { // Sets up root, curTxf & curAoi // ---- - if ((document != null) && - !(document.getImplementation() instanceof SVGDOMImplementation)) { - DOMImplementation impl; - impl = (DOMImplementation) hints.get(KEY_DOM_IMPLEMENTATION); - // impl = ExtensibleSVGDOMImplementation.getDOMImplementation(); + if ((document != null) && !(document.getImplementation() instanceof SVGDOMImplementation)) { + DOMImplementation impl = (DOMImplementation) hints.get(KEY_DOM_IMPLEMENTATION); document = DOMUtilities.deepCloneDocument(document, impl); + if (uri != null) { try { URL url = new URL(uri); @@ -290,7 +288,6 @@ public class SVGImageReader extends ImageReaderBase { ctx = createBridgeContext(); SVGOMDocument svgDoc = (SVGOMDocument) document; - //SVGSVGElement root = svgDoc.getRootElement(); // build the GVT tree builder = new GVTBuilder(); @@ -298,7 +295,7 @@ public class SVGImageReader extends ImageReaderBase { boolean isDynamic = (hints.containsKey(KEY_EXECUTE_ONLOAD) && (Boolean) hints.get(KEY_EXECUTE_ONLOAD) && - BaseScriptingEnvironment.isDynamicDocument(ctx, svgDoc)); + BaseScriptingEnvironment.isDynamicDocument(ctx, svgDoc)); if (isDynamic) { ctx.setDynamicState(BridgeContext.DYNAMIC); @@ -312,8 +309,7 @@ public class SVGImageReader extends ImageReaderBase { catch (BridgeException ex) { // Note: This might fail, but we STILL have the dimensions we need // However, we need to reparse later... - //throw new TranscoderException(ex); - mException = new TranscoderException(ex); + exception = new TranscoderException(ex); } // ---- @@ -321,24 +317,23 @@ public class SVGImageReader extends ImageReaderBase { // get the 'width' and 'height' attributes of the SVG document Dimension2D docSize = ctx.getDocumentSize(); if (docSize != null) { - mDefaultWidth = (float) docSize.getWidth(); - mDefaultHeight = (float) docSize.getHeight(); + defaultWidth = (float) docSize.getWidth(); + defaultHeight = (float) docSize.getHeight(); } else { - mDefaultWidth = 200; - mDefaultHeight = 200; + defaultWidth = 200; + defaultHeight = 200; } // Hack to work around exception above if (root != null) { - mGVTRoot = root; + gvtRoot = root; } - mDocument = svgDoc; - mURI = uri; + this.document = svgDoc; + this.uri = uri; - //ctx.dispose(); // Hack to avoid the transcode method wacking my context... - mContext = ctx; + context = ctx; ctx = null; } @@ -353,24 +348,24 @@ public class SVGImageReader extends ImageReaderBase { // Hacky workaround below... - if (mGVTRoot == null) { + if (gvtRoot == null) { // Try to reparse, if we had no URI last time... - if (mURI != mTranscoderInput.getURI()) { + if (uri != transcoderInput.getURI()) { try { - mContext.dispose(); - mDocument.setURLObject(new URL(mTranscoderInput.getURI())); - transcode(mDocument, mTranscoderInput.getURI(), null); + context.dispose(); + document.setURLObject(new URL(transcoderInput.getURI())); + transcode(document, transcoderInput.getURI(), null); } catch (MalformedURLException ignore) { // Ignored } } - if (mGVTRoot == null) { - throw mException; + if (gvtRoot == null) { + throw exception; } } - ctx = mContext; + ctx = context; // /Hacky if (abortRequested()) { processReadAborted(); @@ -378,13 +373,13 @@ public class SVGImageReader extends ImageReaderBase { } processImageProgress(20f); - // -- -- - SVGSVGElement root = mDocument.getRootElement(); + // ---- + SVGSVGElement root = document.getRootElement(); // ---- // ---- - setImageSize(mDefaultWidth, mDefaultHeight); + setImageSize(defaultWidth, defaultHeight); if (abortRequested()) { processReadAborted(); @@ -394,7 +389,7 @@ public class SVGImageReader extends ImageReaderBase { // compute the preserveAspectRatio matrix AffineTransform Px; - String ref = new ParsedURL(mURI).getRef(); + String ref = new ParsedURL(uri).getRef(); try { Px = ViewBox.getViewTransform(ref, root, width, height); @@ -404,12 +399,12 @@ public class SVGImageReader extends ImageReaderBase { throw new TranscoderException(ex); } - if (Px.isIdentity() && (width != mDefaultWidth || height != mDefaultHeight)) { + if (Px.isIdentity() && (width != defaultWidth || height != defaultHeight)) { // The document has no viewBox, we need to resize it by hand. // we want to keep the document size ratio float xscale, yscale; - xscale = width / mDefaultWidth; - yscale = height / mDefaultHeight; + xscale = width / defaultWidth; + yscale = height / defaultHeight; float scale = Math.min(xscale, yscale); Px = AffineTransform.getScaleInstance(scale, scale); } @@ -440,7 +435,7 @@ public class SVGImageReader extends ImageReaderBase { } processImageProgress(50f); - CanvasGraphicsNode cgn = getCanvasGraphicsNode(mGVTRoot); + CanvasGraphicsNode cgn = getCanvasGraphicsNode(gvtRoot); if (cgn != null) { cgn.setViewingTransform(Px); curTxf = new AffineTransform(); @@ -462,7 +457,7 @@ public class SVGImageReader extends ImageReaderBase { throw new TranscoderException(ex); } - this.root = mGVTRoot; + this.root = gvtRoot; // ---- // NOTE: The code below is copied and pasted from the Batik @@ -510,6 +505,7 @@ public class SVGImageReader extends ImageReaderBase { g2d.setPaint(bgcolor); g2d.fillRect(0, 0, w, h); } + if (rend != null) { // might be null if the svg document is empty g2d.drawRenderedImage(rend, new AffineTransform()); } @@ -534,43 +530,44 @@ public class SVGImageReader extends ImageReaderBase { throw exception; } finally { - if (mContext != null) { - mContext.dispose(); + if (context != null) { + context.dispose(); } } } private synchronized void init() throws TranscoderException { - if (!mInit) { - if (mTranscoderInput == null) { + if (!initialized) { + if (transcoderInput == null) { throw new IllegalStateException("input == null"); } - mInit = true; + initialized = true; - super.transcode(mTranscoderInput, null); + super.transcode(transcoderInput, null); } } private BufferedImage getImage() throws TranscoderException { - if (mImage == null) { - mImage = readImage(); + if (image == null) { + image = readImage(); } - return mImage; + + return image; } protected int getDefaultWidth() throws TranscoderException { init(); - return (int) (mDefaultWidth + 0.5); + return (int) (defaultWidth + 0.5); } protected int getDefaultHeight() throws TranscoderException { init(); - return (int) (mDefaultHeight + 0.5); + return (int) (defaultHeight + 0.5); } - public void setInput(TranscoderInput pInput) { - mTranscoderInput = pInput; + public void setInput(final TranscoderInput pInput) { + transcoderInput = pInput; } } } diff --git a/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReaderSpi.java b/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReaderSpi.java index 3c1744d8..0d1d2a94 100755 --- a/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReaderSpi.java +++ b/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReaderSpi.java @@ -29,8 +29,8 @@ package com.twelvemonkeys.imageio.plugins.svg; import com.twelvemonkeys.imageio.spi.ProviderInfo; -import com.twelvemonkeys.lang.SystemUtil; import com.twelvemonkeys.imageio.util.IIOUtil; +import com.twelvemonkeys.lang.SystemUtil; import javax.imageio.ImageReader; import javax.imageio.spi.ImageReaderSpi; @@ -80,18 +80,18 @@ public class SVGImageReaderSpi extends ImageReaderSpi { ); } - public boolean canDecodeInput(Object pSource) throws IOException { + public boolean canDecodeInput(final Object pSource) throws IOException { return pSource instanceof ImageInputStream && SVG_READER_AVAILABLE && canDecode((ImageInputStream) pSource); } - private static boolean canDecode(ImageInputStream pInput) throws IOException { + private static boolean canDecode(final ImageInputStream pInput) throws IOException { // NOTE: This test is quite quick as it does not involve any parsing, // however it requires the doctype to be "svg", which may not be correct // in all cases... try { pInput.mark(); - // TODO: This is may not be ok for non-UTF/iso-latin encodings... + // TODO: This is not ok for UTF-16 and other wide encodings // TODO: Use an XML (encoding) aware Reader instance instead // Need to figure out pretty fast if this is XML or not int b; @@ -111,9 +111,14 @@ public class SVGImageReaderSpi extends ImageReaderSpi { // Skip over, until begin tag } - // If this is not a comment, or the DOCTYPE declaration, the doc - // has no DOCTYPE and it can't be svg - if (pInput.read() != '!') { + if ((b = pInput.read()) != '!') { + if (b == 's' && pInput.read() == 'v' && pInput.read() == 'g' + && (Character.isWhitespace((char) (b = pInput.read())) || b == ':')) { + // TODO: Support svg with prefix + recognize namespace (http://www.w3.org/2000/svg)! + return true; + } + + // If this is not a comment, or the DOCTYPE declaration, the doc has no DOCTYPE and it can't be svg return false; } @@ -126,19 +131,19 @@ public class SVGImageReaderSpi extends ImageReaderSpi { } // If we are lucky, this is DOCTYPE declaration - if (b == 'D' && pInput.read() == 'O' && pInput.read() == 'C' - && pInput.read() == 'T' && pInput.read() == 'Y' && pInput.read() == 'P' - && pInput.read() == 'E') { + if (b == 'D' && pInput.read() == 'O' && pInput.read() == 'C' && pInput.read() == 'T' + && pInput.read() == 'Y' && pInput.read() == 'P' && pInput.read() == 'E') { docTypeFound = true; while (Character.isWhitespace((char) (b = pInput.read()))) { // Skip over WS } + if (b == 's' && pInput.read() == 'v' && pInput.read() == 'g') { - //System.out.println("It's svg!"); return true; } } } + return false; } finally { @@ -147,17 +152,17 @@ public class SVGImageReaderSpi extends ImageReaderSpi { } - public ImageReader createReaderInstance(Object extension) throws IOException { + public ImageReader createReaderInstance(final Object extension) throws IOException { return new SVGImageReader(this); } - public String getDescription(Locale locale) { + public String getDescription(final Locale locale) { return "Scaleable Vector Graphics (SVG) format image reader"; } @SuppressWarnings({"deprecation"}) @Override - public void onRegistration(ServiceRegistry registry, Class category) { + public void onRegistration(final ServiceRegistry registry, final Class category) { if (!SVG_READER_AVAILABLE) { try { // NOTE: This will break, but it gives us some useful debug info diff --git a/imageio/imageio-batik/src/test/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReaderTestCase.java b/imageio/imageio-batik/src/test/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReaderTestCase.java index e6738a11..40ebd140 100755 --- a/imageio/imageio-batik/src/test/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReaderTestCase.java +++ b/imageio/imageio-batik/src/test/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReaderTestCase.java @@ -31,7 +31,6 @@ package com.twelvemonkeys.imageio.plugins.svg; import com.twelvemonkeys.imageio.util.ImageReaderAbstractTestCase; import org.junit.Ignore; import org.junit.Test; -import static org.junit.Assert.assertEquals; import javax.imageio.ImageReadParam; import javax.imageio.ImageReader; @@ -43,6 +42,8 @@ import java.io.IOException; import java.util.Arrays; import java.util.List; +import static org.junit.Assert.assertEquals; + /** * SVGImageReaderTestCase * @@ -55,7 +56,9 @@ public class SVGImageReaderTestCase extends ImageReaderAbstractTestCase getTestData() { return Arrays.asList( - new TestData(getClassLoaderResource("/svg/batikLogo.svg"), new Dimension(450, 500)) + new TestData(getClassLoaderResource("/svg/batikLogo.svg"), new Dimension(450, 500)), + new TestData(getClassLoaderResource("/svg/red-square.svg"), new Dimension(100, 100)), + new TestData(getClassLoaderResource("/svg/blue-square.svg"), new Dimension(100, 100)) ); } @@ -114,19 +117,19 @@ public class SVGImageReaderTestCase extends ImageReaderAbstractTestCase Date: Tue, 7 Apr 2015 11:23:14 +0200 Subject: [PATCH 006/182] Added license to ProviderInfo classes + minor code clean up. --- .../plugins/svg/SVGImageReaderSpi.java | 41 +++---------- .../imageio/plugins/svg/SVGProviderInfo.java | 58 ++++++++++++++++++ .../plugins/wmf/WMFImageReaderSpi.java | 50 ++++------------ .../imageio/plugins/wmf/WMFProviderInfo.java | 59 +++++++++++++++++++ .../imageio/plugins/bmp/CURProviderInfo.java | 28 +++++++++ .../imageio/plugins/bmp/ICOProviderInfo.java | 28 +++++++++ .../imageio/spi/ReaderWriterProviderInfo.java | 31 +++++++++- .../plugins/icns/ICNSProviderInfo.java | 28 +++++++++ .../imageio/plugins/iff/IFFProviderInfo.java | 28 +++++++++ .../plugins/jpeg/JPEGProviderInfo.java | 28 +++++++++ .../plugins/dcx/DCXImageReaderSpi.java | 34 +---------- .../imageio/plugins/dcx/DCXProviderInfo.java | 28 +++++++++ .../imageio/plugins/pcx/PCXProviderInfo.java | 28 +++++++++ .../plugins/pict/PICTProviderInfo.java | 28 +++++++++ .../imageio/plugins/psd/PSDProviderInfo.java | 28 +++++++++ .../imageio/plugins/sgi/SGIProviderInfo.java | 28 +++++++++ .../imageio/plugins/tga/TGAProviderInfo.java | 28 +++++++++ .../thumbsdb/ThumbsDBProviderInfo.java | 28 +++++++++ .../plugins/tiff/TIFFProviderInfo.java | 28 +++++++++ 19 files changed, 533 insertions(+), 104 deletions(-) create mode 100644 imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/svg/SVGProviderInfo.java create mode 100644 imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/wmf/WMFProviderInfo.java diff --git a/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReaderSpi.java b/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReaderSpi.java index 0d1d2a94..d8e006cf 100755 --- a/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReaderSpi.java +++ b/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReaderSpi.java @@ -28,17 +28,17 @@ package com.twelvemonkeys.imageio.plugins.svg; -import com.twelvemonkeys.imageio.spi.ProviderInfo; +import com.twelvemonkeys.imageio.spi.ImageReaderSpiBase; import com.twelvemonkeys.imageio.util.IIOUtil; -import com.twelvemonkeys.lang.SystemUtil; import javax.imageio.ImageReader; -import javax.imageio.spi.ImageReaderSpi; import javax.imageio.spi.ServiceRegistry; import javax.imageio.stream.ImageInputStream; import java.io.IOException; import java.util.Locale; +import static com.twelvemonkeys.imageio.plugins.svg.SVGProviderInfo.SVG_READER_AVAILABLE; + /** * SVGImageReaderSpi *

@@ -46,38 +46,13 @@ import java.util.Locale; * @author Harald Kuhr * @version $Id: SVGImageReaderSpi.java,v 1.1 2003/12/02 16:45:00 haku Exp $ */ -public class SVGImageReaderSpi extends ImageReaderSpi { - - private final static boolean SVG_READER_AVAILABLE = SystemUtil.isClassAvailable("com.twelvemonkeys.imageio.plugins.svg.SVGImageReader"); +public final class SVGImageReaderSpi extends ImageReaderSpiBase { /** * Creates an {@code SVGImageReaderSpi}. */ public SVGImageReaderSpi() { - this(IIOUtil.getProviderInfo(SVGImageReaderSpi.class)); - } - - private SVGImageReaderSpi(final ProviderInfo pProviderInfo) { - super( - pProviderInfo.getVendorName(), // Vendor name - pProviderInfo.getVersion(), // Version - SVG_READER_AVAILABLE ? new String[]{"svg", "SVG"} : new String[]{""}, // Names - SVG_READER_AVAILABLE ? new String[]{"svg"} : null, // Suffixes - SVG_READER_AVAILABLE ? new String[]{"image/svg", "image/x-svg", "image/svg+xml", "image/svg-xml"} : null, // Mime-types - "com.twelvemonkeys.imageio.plugins.svg.SVGImageReader", // Reader class name - new Class[] {ImageInputStream.class}, // Input types - null, // Writer SPI names - true, // Supports standard stream metadata format - null, // Native stream metadata format name - null, // Native stream metadata format class name - null, // Extra stream metadata format names - null, // Extra stream metadata format class names - true, // Supports standard image metadata format - null, // Native image metadata format name - null, // Native image metadata format class name - null, // Extra image metadata format names - null // Extra image metadata format class names - ); + super(new SVGProviderInfo()); } public boolean canDecodeInput(final Object pSource) throws IOException { @@ -151,13 +126,12 @@ public class SVGImageReaderSpi extends ImageReaderSpi { } } - public ImageReader createReaderInstance(final Object extension) throws IOException { return new SVGImageReader(this); } public String getDescription(final Locale locale) { - return "Scaleable Vector Graphics (SVG) format image reader"; + return "Scalable Vector Graphics (SVG) format image reader"; } @SuppressWarnings({"deprecation"}) @@ -175,5 +149,6 @@ public class SVGImageReaderSpi extends ImageReaderSpi { IIOUtil.deregisterProvider(registry, this, category); } - }} + } +} diff --git a/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/svg/SVGProviderInfo.java b/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/svg/SVGProviderInfo.java new file mode 100644 index 00000000..5e83e1af --- /dev/null +++ b/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/svg/SVGProviderInfo.java @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2015, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name "TwelveMonkeys" nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.twelvemonkeys.imageio.plugins.svg; + +import com.twelvemonkeys.imageio.spi.ReaderWriterProviderInfo; +import com.twelvemonkeys.lang.SystemUtil; + +/** + * SVGProviderInfo. + * + * @author Harald Kuhr + * @author last modified by $Author: harald.kuhr$ + * @version $Id: SVGProviderInfo.java,v 1.0 20/03/15 harald.kuhr Exp$ + */ +final class SVGProviderInfo extends ReaderWriterProviderInfo { + final static boolean SVG_READER_AVAILABLE = SystemUtil.isClassAvailable("com.twelvemonkeys.imageio.plugins.svg.SVGImageReader"); + + protected SVGProviderInfo() { + super( + SVGProviderInfo.class, + SVG_READER_AVAILABLE ? new String[]{"svg", "SVG"} : new String[]{""}, // Names + SVG_READER_AVAILABLE ? new String[]{"svg"} : null, // Suffixes + SVG_READER_AVAILABLE ? new String[]{"image/svg", "image/x-svg", "image/svg+xml", "image/svg-xml"} : null, // Mime-types + "com.twelvemonkeys.imageio.plugins.svg.SVGImageReader", // Reader class name + new String[] {"com.twelvemonkeys.imageio.plugins.svg.SVGImageReaderSpi"}, + null, + null, + false, null, null, null, null, + true, null, null, null, null + ); + } +} diff --git a/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/wmf/WMFImageReaderSpi.java b/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/wmf/WMFImageReaderSpi.java index d9aecc2e..a8106b91 100755 --- a/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/wmf/WMFImageReaderSpi.java +++ b/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/wmf/WMFImageReaderSpi.java @@ -28,64 +28,38 @@ package com.twelvemonkeys.imageio.plugins.wmf; -import com.twelvemonkeys.imageio.spi.ProviderInfo; -import com.twelvemonkeys.lang.SystemUtil; +import com.twelvemonkeys.imageio.spi.ImageReaderSpiBase; import com.twelvemonkeys.imageio.util.IIOUtil; import javax.imageio.ImageReader; -import javax.imageio.spi.ImageReaderSpi; import javax.imageio.spi.ServiceRegistry; import javax.imageio.stream.ImageInputStream; import java.io.IOException; import java.util.Locale; +import static com.twelvemonkeys.imageio.plugins.wmf.WMFProviderInfo.WMF_READER_AVAILABLE; + /** * WMFImageReaderSpi *

- * + * * @author Harald Kuhr * @version $Id: WMFImageReaderSpi.java,v 1.1 2003/12/02 16:45:00 wmhakur Exp $ */ -public class WMFImageReaderSpi extends ImageReaderSpi { - - // This is correct, as we rely on the SVG reader - private final static boolean WMF_READER_AVAILABLE = SystemUtil.isClassAvailable("com.twelvemonkeys.imageio.plugins.svg.SVGImageReader"); +public final class WMFImageReaderSpi extends ImageReaderSpiBase { /** * Creates a {@code WMFImageReaderSpi}. */ public WMFImageReaderSpi() { - this(IIOUtil.getProviderInfo(WMFImageReaderSpi.class)); + super(new WMFProviderInfo()); } - private WMFImageReaderSpi(final ProviderInfo pProviderInfo) { - super( - pProviderInfo.getVendorName(), // Vendor name - pProviderInfo.getVersion(), // Version - WMF_READER_AVAILABLE ? new String[]{"wmf", "WMF"} : new String[]{""}, // Names - WMF_READER_AVAILABLE ? new String[]{"wmf", "emf"} : null, // Suffixes - WMF_READER_AVAILABLE ? new String[]{"application/x-msmetafile", "image/x-wmf"} : null, // Mime-types - "com.twelvemonkeys.imageio.plugins.wmf.WMFImageReader", // Reader class name..? - new Class[] {ImageInputStream.class}, // Input types - null, // Writer SPI names - true, // Supports standard stream metadata format - null, // Native stream metadata format name - null, // Native stream metadata format class name - null, // Extra stream metadata format names - null, // Extra stream metadata format class names - true, // Supports standard image metadata format - null, // Native image metadata format name - null, // Native image metadata format class name - null, // Extra image metadata format names - null // Extra image metadata format class names - ); - } - - public boolean canDecodeInput(Object source) throws IOException { + public boolean canDecodeInput(final Object source) throws IOException { return source instanceof ImageInputStream && WMF_READER_AVAILABLE && canDecode((ImageInputStream) source); } - public static boolean canDecode(ImageInputStream pInput) throws IOException { + public static boolean canDecode(final ImageInputStream pInput) throws IOException { if (pInput == null) { throw new IllegalArgumentException("input == null"); } @@ -96,7 +70,6 @@ public class WMFImageReaderSpi extends ImageReaderSpi { for (byte header : WMF.HEADER) { int read = (byte) pInput.read(); if (header != read) { - // System.out.println("--> " + i + ": " + read + " (expected " + header + ")"); return false; } } @@ -108,18 +81,17 @@ public class WMFImageReaderSpi extends ImageReaderSpi { } } - - public ImageReader createReaderInstance(Object extension) throws IOException { + public ImageReader createReaderInstance(final Object extension) throws IOException { return new WMFImageReader(this); } - public String getDescription(Locale locale) { + public String getDescription(final Locale locale) { return "Windows Meta File (WMF) image reader"; } @SuppressWarnings({"deprecation"}) @Override - public void onRegistration(ServiceRegistry registry, Class category) { + public void onRegistration(final ServiceRegistry registry, final Class category) { if (!WMF_READER_AVAILABLE) { IIOUtil.deregisterProvider(registry, this, category); } diff --git a/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/wmf/WMFProviderInfo.java b/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/wmf/WMFProviderInfo.java new file mode 100644 index 00000000..6db9a085 --- /dev/null +++ b/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/wmf/WMFProviderInfo.java @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2015, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name "TwelveMonkeys" nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.twelvemonkeys.imageio.plugins.wmf; + +import com.twelvemonkeys.imageio.spi.ReaderWriterProviderInfo; +import com.twelvemonkeys.lang.SystemUtil; + +/** + * WMFProviderInfo. + * + * @author Harald Kuhr + * @author last modified by $Author: harald.kuhr$ + * @version $Id: WMFProviderInfo.java,v 1.0 20/03/15 harald.kuhr Exp$ + */ +final class WMFProviderInfo extends ReaderWriterProviderInfo { + // This is correct, as we rely on the SVG reader + final static boolean WMF_READER_AVAILABLE = SystemUtil.isClassAvailable("com.twelvemonkeys.imageio.plugins.svg.SVGImageReader"); + + protected WMFProviderInfo() { + super( + WMFProviderInfo.class, + WMF_READER_AVAILABLE ? new String[]{"wmf", "WMF"} : new String[]{""}, // Names + WMF_READER_AVAILABLE ? new String[]{"wmf", "emf"} : null, // Suffixes + WMF_READER_AVAILABLE ? new String[]{"application/x-msmetafile", "image/x-wmf"} : null, // Mime-types + "com.twelvemonkeys.imageio.plugins.wmf.WMFImageReader", // Reader class name..? + new String[] {"com.twelvemonkeys.imageio.plugins.wmf.WMFImageReaderSpi"}, + null, + null, + false, null, null, null, null, + true, null, null, null, null + ); + } +} diff --git a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/CURProviderInfo.java b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/CURProviderInfo.java index 45831e58..6444d5a6 100644 --- a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/CURProviderInfo.java +++ b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/CURProviderInfo.java @@ -1,3 +1,31 @@ +/* + * Copyright (c) 2015, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name "TwelveMonkeys" nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.plugins.bmp; import com.twelvemonkeys.imageio.spi.ReaderWriterProviderInfo; diff --git a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/ICOProviderInfo.java b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/ICOProviderInfo.java index c6d8fd36..9b29e1fc 100644 --- a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/ICOProviderInfo.java +++ b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/ICOProviderInfo.java @@ -1,3 +1,31 @@ +/* + * Copyright (c) 2015, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name "TwelveMonkeys" nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.plugins.bmp; import com.twelvemonkeys.imageio.spi.ReaderWriterProviderInfo; diff --git a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/spi/ReaderWriterProviderInfo.java b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/spi/ReaderWriterProviderInfo.java index 3b30a3af..9b3f8edb 100644 --- a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/spi/ReaderWriterProviderInfo.java +++ b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/spi/ReaderWriterProviderInfo.java @@ -1,3 +1,31 @@ +/* + * Copyright (c) 2015, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name "TwelveMonkeys" nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.spi; import javax.imageio.stream.ImageInputStream; @@ -38,7 +66,8 @@ public abstract class ReaderWriterProviderInfo extends ProviderInfo { * Creates a provider information instance based on the given class. * * @param infoClass the class to get provider information from. - * The provider info will be taken from the class' package. @throws IllegalArgumentException if {@code pPackage == null} + * The provider info will be taken from the class' package. + * @throws IllegalArgumentException if {@code pPackage == null} */ protected ReaderWriterProviderInfo(final Class infoClass, final String[] formatNames, diff --git a/imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/ICNSProviderInfo.java b/imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/ICNSProviderInfo.java index d72ca7bb..0a82801e 100644 --- a/imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/ICNSProviderInfo.java +++ b/imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/ICNSProviderInfo.java @@ -1,3 +1,31 @@ +/* + * Copyright (c) 2015, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name "TwelveMonkeys" nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.plugins.icns; import com.twelvemonkeys.imageio.spi.ReaderWriterProviderInfo; diff --git a/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/IFFProviderInfo.java b/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/IFFProviderInfo.java index cb47612c..62f8cf89 100644 --- a/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/IFFProviderInfo.java +++ b/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/IFFProviderInfo.java @@ -1,3 +1,31 @@ +/* + * Copyright (c) 2015, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name "TwelveMonkeys" nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.plugins.iff; import com.twelvemonkeys.imageio.spi.ReaderWriterProviderInfo; diff --git a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGProviderInfo.java b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGProviderInfo.java index 961a877c..2865efaf 100644 --- a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGProviderInfo.java +++ b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGProviderInfo.java @@ -1,3 +1,31 @@ +/* + * Copyright (c) 2015, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name "TwelveMonkeys" nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.plugins.jpeg; import com.twelvemonkeys.imageio.spi.ReaderWriterProviderInfo; diff --git a/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/dcx/DCXImageReaderSpi.java b/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/dcx/DCXImageReaderSpi.java index 1a4e31b1..b5749027 100755 --- a/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/dcx/DCXImageReaderSpi.java +++ b/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/dcx/DCXImageReaderSpi.java @@ -28,49 +28,21 @@ package com.twelvemonkeys.imageio.plugins.dcx; -import com.twelvemonkeys.imageio.spi.ProviderInfo; -import com.twelvemonkeys.imageio.util.IIOUtil; +import com.twelvemonkeys.imageio.spi.ImageReaderSpiBase; import javax.imageio.ImageReader; -import javax.imageio.spi.ImageReaderSpi; import javax.imageio.stream.ImageInputStream; import java.io.IOException; import java.nio.ByteOrder; import java.util.Locale; -public final class DCXImageReaderSpi extends ImageReaderSpi { +public final class DCXImageReaderSpi extends ImageReaderSpiBase { /** * Creates a {@code DCXImageReaderSpi}. */ public DCXImageReaderSpi() { - this(IIOUtil.getProviderInfo(DCXImageReaderSpi.class)); - } - - private DCXImageReaderSpi(final ProviderInfo providerInfo) { - super( - providerInfo.getVendorName(), - providerInfo.getVersion(), - new String[]{ - "dcx", - "DCX" - }, - new String[]{"dcx"}, - new String[]{ - // No official IANA record exists - "image/dcx", - "image/x-dcx", - }, - "com.twelvemkonkeys.imageio.plugins.dcx.DCXImageReader", - new Class[] {ImageInputStream.class}, - null, - true, // supports standard stream metadata - null, null, // native stream format name and class - null, null, // extra stream formats - true, // supports standard image metadata - null, null, - null, null // extra image metadata formats - ); + super(new DCXProviderInfo()); } @Override public boolean canDecodeInput(final Object source) throws IOException { diff --git a/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/dcx/DCXProviderInfo.java b/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/dcx/DCXProviderInfo.java index 264a7701..d8988294 100644 --- a/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/dcx/DCXProviderInfo.java +++ b/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/dcx/DCXProviderInfo.java @@ -1,3 +1,31 @@ +/* + * Copyright (c) 2015, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name "TwelveMonkeys" nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.plugins.dcx; import com.twelvemonkeys.imageio.spi.ReaderWriterProviderInfo; diff --git a/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/pcx/PCXProviderInfo.java b/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/pcx/PCXProviderInfo.java index e55e8c0c..f714a2d6 100644 --- a/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/pcx/PCXProviderInfo.java +++ b/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/pcx/PCXProviderInfo.java @@ -1,3 +1,31 @@ +/* + * Copyright (c) 2015, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name "TwelveMonkeys" nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.plugins.pcx; import com.twelvemonkeys.imageio.spi.ReaderWriterProviderInfo; diff --git a/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PICTProviderInfo.java b/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PICTProviderInfo.java index d5117e2f..be4206a2 100644 --- a/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PICTProviderInfo.java +++ b/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PICTProviderInfo.java @@ -1,3 +1,31 @@ +/* + * Copyright (c) 2015, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name "TwelveMonkeys" nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.plugins.pict; import com.twelvemonkeys.imageio.spi.ReaderWriterProviderInfo; diff --git a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDProviderInfo.java b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDProviderInfo.java index 2b52c770..244ed08b 100644 --- a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDProviderInfo.java +++ b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDProviderInfo.java @@ -1,3 +1,31 @@ +/* + * Copyright (c) 2015, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name "TwelveMonkeys" nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.plugins.psd; import com.twelvemonkeys.imageio.spi.ReaderWriterProviderInfo; diff --git a/imageio/imageio-sgi/src/main/java/com/twelvemonkeys/imageio/plugins/sgi/SGIProviderInfo.java b/imageio/imageio-sgi/src/main/java/com/twelvemonkeys/imageio/plugins/sgi/SGIProviderInfo.java index bcfd503b..f6264ce6 100644 --- a/imageio/imageio-sgi/src/main/java/com/twelvemonkeys/imageio/plugins/sgi/SGIProviderInfo.java +++ b/imageio/imageio-sgi/src/main/java/com/twelvemonkeys/imageio/plugins/sgi/SGIProviderInfo.java @@ -1,3 +1,31 @@ +/* + * Copyright (c) 2015, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name "TwelveMonkeys" nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.plugins.sgi; import com.twelvemonkeys.imageio.spi.ReaderWriterProviderInfo; diff --git a/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAProviderInfo.java b/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAProviderInfo.java index c48d47e2..b284bc6a 100644 --- a/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAProviderInfo.java +++ b/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAProviderInfo.java @@ -1,3 +1,31 @@ +/* + * Copyright (c) 2015, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name "TwelveMonkeys" nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.plugins.tga; import com.twelvemonkeys.imageio.spi.ReaderWriterProviderInfo; diff --git a/imageio/imageio-thumbsdb/src/main/java/com/twelvemonkeys/imageio/plugins/thumbsdb/ThumbsDBProviderInfo.java b/imageio/imageio-thumbsdb/src/main/java/com/twelvemonkeys/imageio/plugins/thumbsdb/ThumbsDBProviderInfo.java index 861dab33..ac7019a5 100644 --- a/imageio/imageio-thumbsdb/src/main/java/com/twelvemonkeys/imageio/plugins/thumbsdb/ThumbsDBProviderInfo.java +++ b/imageio/imageio-thumbsdb/src/main/java/com/twelvemonkeys/imageio/plugins/thumbsdb/ThumbsDBProviderInfo.java @@ -1,3 +1,31 @@ +/* + * Copyright (c) 2015, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name "TwelveMonkeys" nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.plugins.thumbsdb; import com.twelvemonkeys.imageio.spi.ReaderWriterProviderInfo; diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFProviderInfo.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFProviderInfo.java index c1e24e58..02f470d1 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFProviderInfo.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFProviderInfo.java @@ -1,3 +1,31 @@ +/* + * Copyright (c) 2015, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name "TwelveMonkeys" nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.plugins.tiff; import com.twelvemonkeys.imageio.spi.ReaderWriterProviderInfo; From 0b58e8fb40631bb4fc8c9d661bb7dbad628436c3 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Tue, 7 Apr 2015 12:01:03 +0200 Subject: [PATCH 007/182] Code clean-up. --- .../src/main/java/com/twelvemonkeys/lang/Platform.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/common/common-lang/src/main/java/com/twelvemonkeys/lang/Platform.java b/common/common-lang/src/main/java/com/twelvemonkeys/lang/Platform.java index 7fb98e4c..d69f37c3 100755 --- a/common/common-lang/src/main/java/com/twelvemonkeys/lang/Platform.java +++ b/common/common-lang/src/main/java/com/twelvemonkeys/lang/Platform.java @@ -204,7 +204,7 @@ public final class Platform { * @author Harald Kuhr * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/main/java/com/twelvemonkeys/lang/Platform.java#1 $ */ - public static enum Architecture { + public enum Architecture { X86("x86"), I386("i386"), I686("i686"), @@ -215,7 +215,7 @@ public final class Platform { final String name;// for debug only - private Architecture(String pName) { + Architecture(String pName) { name = pName; } @@ -233,7 +233,7 @@ public final class Platform { * @author Harald Kuhr * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/main/java/com/twelvemonkeys/lang/Platform.java#1 $ */ - public static enum OperatingSystem { + public enum OperatingSystem { Windows("Windows", "win"), Linux("Linux", "lnx"), Solaris("Solaris", "sun"), @@ -244,7 +244,7 @@ public final class Platform { final String id; final String name;// for debug only - private OperatingSystem(String pName, String pId) { + OperatingSystem(String pName, String pId) { name = pName; id = pId != null ? pId : pName.toLowerCase(); } From e2ea8b1cce1df09c853ca1df6b1b0dcf8bfc2302 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Wed, 8 Apr 2015 12:58:19 +0200 Subject: [PATCH 008/182] Slightly "safer" property lookup, to avoid security exceptions in class init. --- .../imageio/color/ColorSpaces.java | 29 ++++++++++++------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/ColorSpaces.java b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/ColorSpaces.java index 953c8cbd..6720146e 100644 --- a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/ColorSpaces.java +++ b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/ColorSpaces.java @@ -84,11 +84,11 @@ public final class ColorSpaces { public static final int CS_GENERIC_CMYK = 5001; // Weak references to hold the color spaces while cached - private static WeakReference adobeRGB1998 = new WeakReference(null); - private static WeakReference genericCMYK = new WeakReference(null); + private static WeakReference adobeRGB1998 = new WeakReference<>(null); + private static WeakReference genericCMYK = new WeakReference<>(null); // Cache for the latest used color spaces - private static final Map cache = new LRUHashMap(10); + private static final Map cache = new LRUHashMap<>(10); private ColorSpaces() {} @@ -249,7 +249,7 @@ public final class ColorSpaces { } } - adobeRGB1998 = new WeakReference(profile); + adobeRGB1998 = new WeakReference<>(profile); } } @@ -272,7 +272,7 @@ public final class ColorSpaces { return CMYKColorSpace.getInstance(); } - genericCMYK = new WeakReference(profile); + genericCMYK = new WeakReference<>(profile); } } @@ -367,15 +367,18 @@ public final class ColorSpaces { } private static class Profiles { - private static final Properties PROFILES = loadProfiles(Platform.os()); + private static final Properties PROFILES = loadProfiles(); - private static Properties loadProfiles(final Platform.OperatingSystem os) { + private static Properties loadProfiles() { Properties systemDefaults; try { - systemDefaults = SystemUtil.loadProperties(ColorSpaces.class, "com/twelvemonkeys/imageio/color/icc_profiles_" + os.id()); + systemDefaults = SystemUtil.loadProperties( + ColorSpaces.class, + "com/twelvemonkeys/imageio/color/icc_profiles_" + Platform.os().id() + ); } - catch (IOException ignore) { + catch (SecurityException | IOException ignore) { System.err.printf( "Warning: Could not load system default ICC profile locations from %s, will use bundled fallback profiles.\n", ignore.getMessage() @@ -392,10 +395,14 @@ public final class ColorSpaces { Properties profiles = new Properties(systemDefaults); try { - Properties userOverrides = SystemUtil.loadProperties(ColorSpaces.class, "com/twelvemonkeys/imageio/color/icc_profiles"); + Properties userOverrides = SystemUtil.loadProperties( + ColorSpaces.class, + "com/twelvemonkeys/imageio/color/icc_profiles" + ); profiles.putAll(userOverrides); } - catch (IOException ignore) { + catch (SecurityException | IOException ignore) { + // Most likely, this file won't be there } if (DEBUG) { From acf64e8c85e7f3290975f686a5ea159271543be5 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Wed, 8 Apr 2015 13:00:01 +0200 Subject: [PATCH 009/182] Code clean-up. --- .../com/twelvemonkeys/imageio/color/ICCProfileSanitizer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/ICCProfileSanitizer.java b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/ICCProfileSanitizer.java index 0156c5ec..10352384 100644 --- a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/ICCProfileSanitizer.java +++ b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/ICCProfileSanitizer.java @@ -14,7 +14,7 @@ import java.awt.color.ICC_Profile; interface ICCProfileSanitizer { void fixProfile(ICC_Profile profile, byte[] profileHeader); - static class Factory { + class Factory { static ICCProfileSanitizer get() { // Strategy pattern: // - KCMSSanitizerStrategy - Current behaviour, default for Java 1.6 and Oracle JRE 1.7 From 6631d7c8bcb002e3dd7ed08d6fc1e3915a29a71e Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Wed, 8 Apr 2015 13:12:20 +0200 Subject: [PATCH 010/182] Code clean-up. --- .../imageio/plugins/bmp/BMPImageReaderTest.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/imageio/imageio-bmp/src/test/java/com/twelvemonkeys/imageio/plugins/bmp/BMPImageReaderTest.java b/imageio/imageio-bmp/src/test/java/com/twelvemonkeys/imageio/plugins/bmp/BMPImageReaderTest.java index 80ae803b..8e1fb976 100755 --- a/imageio/imageio-bmp/src/test/java/com/twelvemonkeys/imageio/plugins/bmp/BMPImageReaderTest.java +++ b/imageio/imageio-bmp/src/test/java/com/twelvemonkeys/imageio/plugins/bmp/BMPImageReaderTest.java @@ -19,6 +19,7 @@ import java.io.IOException; import java.lang.reflect.Constructor; import java.net.URISyntaxException; import java.util.Arrays; +import java.util.Collections; import java.util.Iterator; import java.util.List; @@ -90,7 +91,7 @@ public class BMPImageReaderTest extends ImageReaderAbstractTestCase getFormatNames() { - return Arrays.asList("bmp"); + return Collections.singletonList("bmp"); } protected List getSuffixes() { @@ -132,7 +133,7 @@ public class BMPImageReaderTest extends ImageReaderAbstractTestCase getMIMETypes() { - return Arrays.asList("image/bmp"); + return Collections.singletonList("image/bmp"); } @Override From d303918d87b6e1041fe0cae5cd68deda99cf2ba4 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Wed, 8 Apr 2015 13:38:15 +0200 Subject: [PATCH 011/182] Code clean-up. --- .../plugins/jpeg/JPEGImageReaderTest.java | 23 +++++++++---------- 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReaderTest.java b/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReaderTest.java index 3ab02410..97b0ff22 100644 --- a/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReaderTest.java +++ b/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReaderTest.java @@ -59,6 +59,8 @@ import java.util.*; import java.util.List; import static org.junit.Assert.*; +import static org.junit.Assume.assumeNoException; +import static org.junit.Assume.assumeNotNull; import static org.mockito.Matchers.anyString; import static org.mockito.Matchers.eq; import static org.mockito.Mockito.mock; @@ -149,7 +151,7 @@ public class JPEGImageReaderTest extends ImageReaderAbstractTestCase getMIMETypes() { - return Arrays.asList("image/jpeg"); + return Collections.singletonList("image/jpeg"); } // TODO: Test that subsampling is actually reading something @@ -1096,7 +1098,7 @@ public class JPEGImageReaderTest extends ImageReaderAbstractTestCase(0)); + assertThat(markerSequence.getChildNodes().getLength(), new GreaterThan<>(0)); NodeList unknowns = markerSequence.getElementsByTagName("unknown"); for (int j = 0; j < unknowns.getLength(); j++) { @@ -1155,10 +1157,6 @@ public class JPEGImageReaderTest extends ImageReaderAbstractTestCase spiClass = (Class) Class.forName("com.sun.imageio.plugins.jpeg.JPEGImageReaderSpi"); ImageReaderSpi provider = spiClass.newInstance(); - return provider.createReaderInstance(); + ImageReader reader = provider.createReaderInstance(); + assumeNotNull(reader); + return reader; } catch (Throwable t) { - System.err.println("WARNING: Could not create ImageReader for reference (missing dependency): " + t.getMessage()); - - return null; + assumeNoException(t); } + + return null; } private void assertTreesEquals(String message, Node expectedTree, Node actualTree) { @@ -1288,7 +1288,7 @@ public class JPEGImageReaderTest extends ImageReaderAbstractTestCase sortNodes(final NodeList nodes) { - ArrayList sortedNodes = new ArrayList(new AbstractList() { + ArrayList sortedNodes = new ArrayList<>(new AbstractList() { @Override public IIOMetadataNode get(int index) { return (IIOMetadataNode) nodes.item(index); @@ -1436,7 +1436,6 @@ public class JPEGImageReaderTest extends ImageReaderAbstractTestCase Date: Wed, 8 Apr 2015 13:38:57 +0200 Subject: [PATCH 012/182] Code clean-up. --- .../src/main/java/com/twelvemonkeys/image/ResampleOp.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/common/common-image/src/main/java/com/twelvemonkeys/image/ResampleOp.java b/common/common-image/src/main/java/com/twelvemonkeys/image/ResampleOp.java index c2132eed..2f598cb0 100644 --- a/common/common-image/src/main/java/com/twelvemonkeys/image/ResampleOp.java +++ b/common/common-image/src/main/java/com/twelvemonkeys/image/ResampleOp.java @@ -547,7 +547,7 @@ public class ResampleOp implements BufferedImageOp/* TODO: RasterOp */ { // TODO: What if output != null and wrong size? Create new? Render on only a part? Document? - // If filter type != POINT or BOX an input has IndexColorModel, convert + // If filter type != POINT or BOX and input has IndexColorModel, convert // to true color, with alpha reflecting that of the original color model. BufferedImage temp; ColorModel cm; @@ -590,7 +590,7 @@ public class ResampleOp implements BufferedImageOp/* TODO: RasterOp */ { /* // TODO: This idea from Chet and Romain is actually not too bad.. // It reuses the image/raster/graphics... - // However, they forget to end with a halve operation.. + // However, they don't end with a halve operation.. private static BufferedImage getFasterScaledInstance(BufferedImage img, int targetWidth, int targetHeight, Object hint, boolean progressiveBilinear) { @@ -895,7 +895,7 @@ public class ResampleOp implements BufferedImageOp/* TODO: RasterOp */ { * filter function definitions */ - static interface InterpolationFilter { + interface InterpolationFilter { double filter(double t); double support(); From d3fd45e5cc318111a3c1d0bd9410a6bb7a0a953e Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Wed, 8 Apr 2015 13:40:00 +0200 Subject: [PATCH 013/182] Updated todo --- imageio/imageio-core/todo.txt | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/imageio/imageio-core/todo.txt b/imageio/imageio-core/todo.txt index 4e48a7fa..fd469c86 100755 --- a/imageio/imageio-core/todo.txt +++ b/imageio/imageio-core/todo.txt @@ -1,8 +1,7 @@ - Rename to imageio-common? -- Separate modules for more for more plugins - - The BMP reader supports some special formats not supported by Sun reader - - PNM package is pretty complete, but useless, as it's provided by Sun? License? - - WBMP? - - XBM? +- Add stream support for NIO and NIO2 stuff? Path, ByteChannel +- Faster RAF support (need to buffer the slow readShort/readInt/readLong/readUnsignedShort/readUnsignedInt) +- See if it's possible to use FileImageInputStream for FileChannels and FileInputStream to avoid the caching +- And the above for output streams too... DONE: - Split up into separate plugins (modules), to allow easier configuration \ No newline at end of file From ee81e8ca31b43dc4cf28af31a60fa1e82f01b586 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Wed, 8 Apr 2015 13:41:06 +0200 Subject: [PATCH 014/182] Updated readme. --- README.md | 83 ++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 57 insertions(+), 26 deletions(-) diff --git a/README.md b/README.md index 9379173d..27cbca12 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,7 @@ +## Latest + +TwelveMonkeys ImageIO 3.0.2 is released. + ## About TwelveMonkeys ImageIO is a collection of plugins and extensions for Java's ImageIO. @@ -16,27 +20,36 @@ The goal is to create a set of efficient and robust ImageIO plug-ins, that can b Mainstream format support +#### MS Windows/IBM OS/2 Device Independent Bitmap (BMP) *3.1* + +* Read support for all known versions of the DIB/BMP format + * Indexed color, 1, 4 and 8 bit, including 4 and 8 bit RLE + * RGB, 16, 24 and 32 bit + * Embedded PNG and JPEG data + * Windows and OS/2 versions +* Native and standard metadata format + #### JPEG -* Read support for the following JPEG flavors: +* Read support for the following JPEG "flavors": * YCbCr JPEGs without JFIF segment (converted to RGB, using embedded ICC profile) - * CMYK JPEGs (converted to RGB by default or as CMYK, using embedded ICC profile ) + * CMYK JPEGs (converted to RGB by default or as CMYK, using embedded ICC profile) * Adobe YCCK JPEGs (converted to RGB by default or as CMYK, using embedded ICC profile) - * JPEGs containing ICC profiles with interpretation other than 'Perceptual' - * JPEGs containing ICC profiles with class other than 'Display' - * JPEGs containing ICC profiles that are incompatible with stream data - * JPEGs with corrupted ICC profiles - * JPEGs with corrupted `ICC_PROFILE` segments + * JPEGs containing ICC profiles with interpretation other than 'Perceptual' or class other than 'Display' + * JPEGs containing ICC profiles that are incompatible with stream data, corrupted ICC profiles or corrupted `ICC_PROFILE` segments * JPEGs using non-standard color spaces, unsupported by Java 2D - * Issues warnings instead of throwing exceptions in cases of corrupted or non-conformant data where ever the image data can still be read in a reasonable way + * JPEGs with APP14/Adobe segments with length other than 14 bytes + * 8 bit JPEGs with 16 bit DQT segments + * Issues warnings instead of throwing exceptions in cases of corrupted or non-conformant data where ever the image + data can still be read in a reasonable way * Thumbnail support: - * JFIF thumbnails (even if stream contains inconsistent metadata) + * JFIF thumbnails (even if stream contains "inconsistent metadata") * JFXX thumbnails (JPEG, Indexed and RGB) * EXIF thumbnails (JPEG, RGB and YCbCr) * Metadata support: - * JPEG metadata in both standard and native formats (even if stream contains inconsistent metadata) + * JPEG metadata in both standard and native formats (even if stream contains "inconsistent metadata") * `javax_imageio_jpeg_image_1.0` format (currently as native format, may change in the future) - * Illegal combinations of JFIF, Exif and Adobe markers, using "unknown" segments in the + * Non-conforming combinations of JFIF, Exif and Adobe markers, using "unknown" segments in the "MarkerSequence" tag for the unsupported segments (for `javax_imageio_jpeg_image_1.0` format) * Extended write support in progress: * CMYK JPEGs @@ -46,8 +59,11 @@ Mainstream format support * Possibly coming in the future, pending some license issues. -If you are one of the authors, or know one of the authors and/or the current license holders of either the original jj2000 package or the JAI ImageIO project, please contact me -(I've tried to get in touch in various ways, without success so far). +If you are one of the authors, or know one of the authors and/or the current license holders of either the original +jj2000 package or the JAI ImageIO project, please contact me (I've tried to get in touch in various ways, +without success so far). + +Alternatively, if you have or know of a JPEG-2000 implementation in Java with a suitable license, get in touch. :-) #### NetPBM Portable Any Map (PNM) *3.1* @@ -60,6 +76,7 @@ If you are one of the authors, or know one of the authors and/or the current lic * Write support for the following formats: * PPM in 'P6' (binary) format * PAM in 'P7' (binary) format +* Standard metadata support #### Adobe Photoshop Document (PSD) @@ -79,6 +96,7 @@ If you are one of the authors, or know one of the authors and/or the current lic * JPEG * RAW (RGB) * Support for "Large Document Format" (PSB) +* Native metadata support #### Aldus/Adobe Tagged Image File Format (TIFF) @@ -102,8 +120,11 @@ If you are one of the authors, or know one of the authors and/or the current lic * ICC profiles (ICCProfile) * BitsPerSample values up to 16 for most PhotometricInterpretations * Multiple images (pages) in one file -* Write support in progress - * Will support writing most "Baseline" TIFF file types +* Write support for most "Baseline" TIFF options + * Uncompressed, PackBits, ZLib and Deflate + * Currently missing the CCITT fax encodings + * Additional support for LZW and JPEG (type 7) compressions + * Horizontal differencing Predictor (type 2) for LZW, ZLib, Deflate Legacy formats @@ -135,6 +156,7 @@ Legacy formats * Support for the following compression types: * Uncompressed (experimental) * RLE compressed +* Standard metadata support #### Apple Mac Paint Picture Format (PICT) @@ -155,6 +177,7 @@ Legacy formats * Support for the following compression types: * Uncompressed * RLE compressed +* Standard metadata support #### Truevision TGA Image Format (TGA) *3.1* @@ -165,6 +188,7 @@ Legacy formats * Support for the following compression types: * Uncompressed * RLE compressed +* Standard metadata support Icon/other formats @@ -323,11 +347,12 @@ Unless you add `ImageIO.scanForPlugins()` somewhere in your code, the plugins mi I addition, servlet contexts dynamically loads and unloads classes (using a new class loader per context). If you restart your application, old classes will by default remain in memory forever (because the next time `scanForPlugins` is called, it's another `ClassLoader` that scans/loads classes, and thus they will be new instances -in the registry). If a read is attempted using one of the remaining ("old") readers, weird exceptions -(like `NullPointerException`s when accessing `static final` initialized fields) may occur. +in the registry). If a read is attempted using one of the remaining "old" readers, weird exceptions +(like `NullPointerException`s when accessing `static final` initialized fields or `NoClassDefFoundError`s +for uninitialized inner classes) may occur. To work around both the discovery problem and the resource leak, -it is recommended to use the `IIOProviderContextListener` that implements +it is *strongly recommended* to use the `IIOProviderContextListener` that implements dynamic loading and unloading of ImageIO plugins for web applications. @@ -343,6 +368,12 @@ dynamic loading and unloading of ImageIO plugins for web applications. +Loading plugins from `WEB-INF/lib` without the context listener installed is unsupported and will not work correctly. + +The context listener has no dependencies to the TwelveMonkeys ImageIO plugins, and may be used with JAI ImageIO +or other ImageIO plugins as well. + +Another safe option, is to place the JAR files in the application server's shared or common lib folder. #### Using the ResampleOp @@ -416,7 +447,7 @@ To verify that the JPEG plugin is installed and used at run-time, you could use The first line should print: - reader: com.twelvemonkeys.imageio.jpeg.JPEGImageReader@somehash + reader: com.twelvemonkeys.imageio.plugins.jpeg.JPEGImageReader@somehash #### Maven dependency example @@ -481,7 +512,7 @@ Servlet support The project is distributed under the OSI approved [BSD license](http://opensource.org/licenses/BSD-3-Clause): - Copyright (c) 2008-2013, Harald Kuhr + Copyright (c) 2008-2015, Harald Kuhr All rights reserved. Redistribution and use in source and binary forms, with or without @@ -521,7 +552,7 @@ a: The easiest way is to build your own project using Maven, and just add depend q: What changes do I have to make to my code in order to use the plug-ins? -a: The short answer is: None. For basic usage, like ImageIO.read(...) or ImageIO.getImageReaders(...), there is no need +a: The short answer is: None. For basic usage, like `ImageIO.read(...)` or `ImageIO.getImageReaders(...)`, there is no need to change your code. Most of the functionality is available through standard ImageIO APIs, and great care has been taken not to introduce extra API where none is necessary. @@ -538,11 +569,11 @@ All you have have to do, is to make sure you have the TwelveMonkeys JARs in your You can read more about the registry and the lookup mechanism in the [IIORegistry API doc](http://docs.oracle.com/javase/7/docs/api/javax/imageio/spi/IIORegistry.html). -The fine print: The TwelveMonkeys service providers for TIFF and JPEG overrides the onRegistration method, and -utilizes the pairwise partial ordering mechanism of the IIOServiceRegistry to make sure it is installed before -the Sun/Oracle provided JPEGImageReader and the Apple provided TIFFImageReader on OS X, respectively. -Using the pairwise ordering will not remove any functionality form these implementations, but in most cases you'll end -up using the TwelveMonkeys plug-ins instead. +The fine print: The TwelveMonkeys service providers for JPEG, BMP and TIFF, overrides the onRegistration method, and +utilizes the pairwise partial ordering mechanism of the `IIOServiceRegistry` to make sure it is installed before +the Sun/Oracle provided `JPEGImageReader` and `BMPImageReader`, and the Apple provided `TIFFImageReader` on OS X, +respectively. Using the pairwise ordering will not remove any functionality form these implementations, but in most +cases you'll end up using the TwelveMonkeys plug-ins instead. q: What about JAI? Several of the formats are already supported by JAI. From 9ca76ec128e826993921b16689f157feb98ca535 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Wed, 8 Apr 2015 14:18:15 +0200 Subject: [PATCH 015/182] Code clean-up. --- .../imageio/plugins/tiff/LZWEncoder.java | 45 +++++++------------ 1 file changed, 16 insertions(+), 29 deletions(-) diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/LZWEncoder.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/LZWEncoder.java index ee3cdf17..a5a4e333 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/LZWEncoder.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/LZWEncoder.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, Harald Kuhr + * Copyright (c) 2015, Harald Kuhr * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -58,11 +58,9 @@ final class LZWEncoder implements Encoder { private static final int TABLE_SIZE = 1 << MAX_BITS; - private int remaining; - private final LZWString[] table = new LZWString[TABLE_SIZE]; -// private final Map reverseTable = new HashMap<>(TABLE_SIZE - 256); // This is foobar private final Map reverseTable = new TreeMap<>(); // This is foobar +// private final Map reverseTable = new HashMap<>(TABLE_SIZE); // This is foobar private int tableLength; LZWString omega = LZWString.EMPTY; @@ -71,8 +69,12 @@ final class LZWEncoder implements Encoder { private int maxCode; int bitMask; - int bits; - int bitPos; + // Buffer for partial codes + private int bits = 0; + private int bitPos = 0; + + // Keep track of how many bytes we will write, to make sure we write EOI at correct position + private long remaining; protected LZWEncoder(final int length) { this.remaining = length; @@ -85,23 +87,14 @@ final class LZWEncoder implements Encoder { init(); } - private static int bitmaskFor(final int bits) { - return (1 << bits) - 1; - } - private void init() { tableLength = 258; bitsPerCode = MIN_BITS; bitMask = bitmaskFor(bitsPerCode); maxCode = maxCode(); -// omega = LZWString.EMPTY; reverseTable.clear(); } - protected int maxCode() { - return bitMask; - } - public void encode(final OutputStream stream, final ByteBuffer buffer) throws IOException { // InitializeStringTable(); // WriteCode(ClearCode); @@ -173,19 +166,9 @@ final class LZWEncoder implements Encoder { Integer index = reverseTable.get(string); return index != null ? index : -1; - - // TODO: Needs optimization :-) -// for (int i = 258; i < tableLength; i++) { -// if (table[i].equals(string)) { -// return i; -// } -// } - -// return -1; } private int addStringToTable(final LZWString string) { -// System.err.println("LZWEncoder.addStringToTable: " + string); final int index = tableLength++; table[index] = string; reverseTable.put(string, index); @@ -201,10 +184,6 @@ final class LZWEncoder implements Encoder { maxCode = maxCode(); } -// if (string.length > maxString) { -// maxString = string.length; -// } - return index; } @@ -222,4 +201,12 @@ final class LZWEncoder implements Encoder { bits &= bitmaskFor(bitPos); } + + private static int bitmaskFor(final int bits) { + return (1 << bits) - 1; + } + + protected int maxCode() { + return bitMask; + } } From c2f93b2d3f8e7421dc748e49210947e0ce1ecd71 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Wed, 8 Apr 2015 16:14:29 +0200 Subject: [PATCH 016/182] Copy/Paste support. :-) --- .../imageio/ImageReaderBase.java | 104 ++++++++++++++++-- 1 file changed, 92 insertions(+), 12 deletions(-) diff --git a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/ImageReaderBase.java b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/ImageReaderBase.java index fbfa7825..6e244fe4 100644 --- a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/ImageReaderBase.java +++ b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/ImageReaderBase.java @@ -29,6 +29,7 @@ package com.twelvemonkeys.imageio; import com.twelvemonkeys.image.BufferedImageIcon; +import com.twelvemonkeys.image.ImageUtil; import com.twelvemonkeys.imageio.util.IIOUtil; import javax.imageio.*; @@ -37,6 +38,9 @@ import javax.imageio.spi.ImageReaderSpi; import javax.imageio.stream.ImageInputStream; import javax.swing.*; import java.awt.*; +import java.awt.datatransfer.DataFlavor; +import java.awt.datatransfer.Transferable; +import java.awt.datatransfer.UnsupportedFlavorException; import java.awt.event.*; import java.awt.image.BufferedImage; import java.awt.image.IndexColorModel; @@ -424,6 +428,8 @@ public abstract class ImageReaderBase extends ImageReader { static final String ZOOM_OUT = "zoom-out"; static final String ZOOM_ACTUAL = "zoom-actual"; + private BufferedImage image; + Paint backgroundPaint; final Paint checkeredBG; @@ -434,6 +440,7 @@ public abstract class ImageReaderBase extends ImageReader { setOpaque(false); setCursor(Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR)); + image = pImage; checkeredBG = createTexture(); // For indexed color, default to the color of the transparent pixel, if any @@ -441,7 +448,7 @@ public abstract class ImageReaderBase extends ImageReader { backgroundPaint = defaultBG != null ? defaultBG : checkeredBG; - setupActions(pImage); + setupActions(); setComponentPopupMenu(createPopupMenu()); addMouseListener(new MouseAdapter() { @Override @@ -451,16 +458,64 @@ public abstract class ImageReaderBase extends ImageReader { } } }); + + setTransferHandler(new TransferHandler() { + @Override + public int getSourceActions(JComponent c) { + return COPY; + } + + @Override + protected Transferable createTransferable(JComponent c) { + return new ImageTransferable(image); + } + + @Override + public boolean importData(JComponent comp, Transferable t) { + if (canImport(comp, t.getTransferDataFlavors())) { + try { + Image transferData = (Image) t.getTransferData(DataFlavor.imageFlavor); + image = ImageUtil.toBuffered(transferData); + setIcon(new BufferedImageIcon(image)); + + return true; + } + catch (UnsupportedFlavorException | IOException ignore) { + } + } + + return false; + } + + @Override + public boolean canImport(JComponent comp, DataFlavor[] transferFlavors) { + for (DataFlavor flavor : transferFlavors) { + if (flavor.equals(DataFlavor.imageFlavor)) { + return true; + } + } + + return false; + } + + @Override + protected void exportDone(JComponent source, Transferable data, int action) { + super.exportDone(source, data, action); + } + }); } - private void setupActions(final BufferedImage pImage) { + private void setupActions() { // Mac weirdness... VK_MINUS/VK_PLUS seems to map to english key map always... - bindAction(new ZoomAction("Zoom in", pImage, 2), ZOOM_IN, KeyStroke.getKeyStroke('+'), KeyStroke.getKeyStroke(KeyEvent.VK_ADD, 0)); - bindAction(new ZoomAction("Zoom out", pImage, .5), ZOOM_OUT, KeyStroke.getKeyStroke('-'), KeyStroke.getKeyStroke(KeyEvent.VK_SUBTRACT, 0)); - bindAction(new ZoomAction("Zoom actual", pImage), ZOOM_ACTUAL, KeyStroke.getKeyStroke('0'), KeyStroke.getKeyStroke(KeyEvent.VK_0, 0)); + bindAction(new ZoomAction("Zoom in", 2), ZOOM_IN, KeyStroke.getKeyStroke('+'), KeyStroke.getKeyStroke(KeyEvent.VK_ADD, 0)); + bindAction(new ZoomAction("Zoom out", .5), ZOOM_OUT, KeyStroke.getKeyStroke('-'), KeyStroke.getKeyStroke(KeyEvent.VK_SUBTRACT, 0)); + bindAction(new ZoomAction("Zoom actual"), ZOOM_ACTUAL, KeyStroke.getKeyStroke('0'), KeyStroke.getKeyStroke(KeyEvent.VK_0, 0)); + + bindAction(TransferHandler.getCopyAction(), (String) TransferHandler.getCopyAction().getValue(Action.NAME), KeyStroke.getKeyStroke(KeyEvent.VK_C, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())); + bindAction(TransferHandler.getPasteAction(), (String) TransferHandler.getPasteAction().getValue(Action.NAME), KeyStroke.getKeyStroke(KeyEvent.VK_V, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())); } - private void bindAction(final AbstractAction action, final String key, final KeyStroke... keyStrokes) { + private void bindAction(final Action action, final String key, final KeyStroke... keyStrokes) { for (KeyStroke keyStroke : keyStrokes) { getInputMap(WHEN_IN_FOCUSED_WINDOW).put(keyStroke, key); } @@ -588,20 +643,18 @@ public abstract class ImageReaderBase extends ImageReader { } private class ZoomAction extends AbstractAction { - private final BufferedImage image; private final double zoomFactor; - public ZoomAction(final String name, final BufferedImage image, final double zoomFactor) { + public ZoomAction(final String name, final double zoomFactor) { super(name); - this.image = image; this.zoomFactor = zoomFactor; } - public ZoomAction(final String name, final BufferedImage image) { - this(name, image, 0); + public ZoomAction(final String name) { + this(name, 0); } - public void actionPerformed(ActionEvent e) { + public void actionPerformed(final ActionEvent e) { if (zoomFactor <= 0) { setIcon(new BufferedImageIcon(image)); } @@ -614,6 +667,33 @@ public abstract class ImageReaderBase extends ImageReader { } } } + + private static class ImageTransferable implements Transferable { + private final BufferedImage image; + + public ImageTransferable(final BufferedImage image) { + this.image = image; + } + + @Override + public DataFlavor[] getTransferDataFlavors() { + return new DataFlavor[] {DataFlavor.imageFlavor}; + } + + @Override + public boolean isDataFlavorSupported(final DataFlavor flavor) { + return DataFlavor.imageFlavor.equals(flavor); + } + + @Override + public Object getTransferData(final DataFlavor flavor) throws UnsupportedFlavorException, IOException { + if (isDataFlavorSupported(flavor)) { + return image; + } + + throw new UnsupportedFlavorException(flavor); + } + } } private static class ExitIfNoWindowPresentHandler extends WindowAdapter { From e61f6f6d7b80af54a719d4ea424c07ac52d6ae7e Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Wed, 8 Apr 2015 16:15:25 +0200 Subject: [PATCH 017/182] Code clean-up. --- .../main/java/com/twelvemonkeys/imageio/ImageReaderBase.java | 5 ----- 1 file changed, 5 deletions(-) diff --git a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/ImageReaderBase.java b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/ImageReaderBase.java index 6e244fe4..90e16063 100644 --- a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/ImageReaderBase.java +++ b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/ImageReaderBase.java @@ -497,11 +497,6 @@ public abstract class ImageReaderBase extends ImageReader { return false; } - - @Override - protected void exportDone(JComponent source, Transferable data, int action) { - super.exportDone(source, data, action); - } }); } From 2a5736bea1066763573d37ff4388067e4e530ffb Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Thu, 9 Apr 2015 11:44:53 +0200 Subject: [PATCH 018/182] Fixed bug in progress reporting. --- .../imageio/plugins/pcx/PCXImageReader.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/pcx/PCXImageReader.java b/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/pcx/PCXImageReader.java index afe9e496..cdac810b 100755 --- a/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/pcx/PCXImageReader.java +++ b/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/pcx/PCXImageReader.java @@ -277,13 +277,13 @@ public final class PCXImageReader extends ImageReaderBase { throw new AssertionError(); } - processImageProgress(100f * y / height * c / header.getChannels()); - if (abortRequested()) { break; } } + processImageProgress(100f * y / height); + if (y >= srcRegion.y + srcRegion.height) { break; } @@ -300,6 +300,11 @@ public final class PCXImageReader extends ImageReaderBase { return destination; } + protected void processImageProgress(float percentageDone) { +// System.err.println("percentageDone: " + percentageDone); + super.processImageProgress(percentageDone); + } + private void readRowByte(final DataInput input, Rectangle srcRegion, int xSub, From 072e655b03815cdea3e63a5cf74f55ab3190739b Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Thu, 9 Apr 2015 11:47:25 +0200 Subject: [PATCH 019/182] Fixed bug in progress reporting. --- .../twelvemonkeys/imageio/plugins/pcx/PCXImageReader.java | 5 ----- 1 file changed, 5 deletions(-) diff --git a/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/pcx/PCXImageReader.java b/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/pcx/PCXImageReader.java index cdac810b..7be2262d 100755 --- a/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/pcx/PCXImageReader.java +++ b/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/pcx/PCXImageReader.java @@ -300,11 +300,6 @@ public final class PCXImageReader extends ImageReaderBase { return destination; } - protected void processImageProgress(float percentageDone) { -// System.err.println("percentageDone: " + percentageDone); - super.processImageProgress(percentageDone); - } - private void readRowByte(final DataInput input, Rectangle srcRegion, int xSub, From 23ed1e0279e72a70f588396d3f135926f6ba6c4c Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Thu, 9 Apr 2015 12:41:16 +0200 Subject: [PATCH 020/182] Fix typo. --- .../com/twelvemonkeys/imageio/plugins/pcx/PCXImageReader.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/pcx/PCXImageReader.java b/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/pcx/PCXImageReader.java index 7be2262d..604e012a 100755 --- a/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/pcx/PCXImageReader.java +++ b/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/pcx/PCXImageReader.java @@ -372,7 +372,7 @@ public final class PCXImageReader extends ImageReaderBase { readPalette = true; // Wee can't simply skip to an offset, as the RLE compression makes the file size unpredictable - skiptToEOF(imageInput); + skipToEOF(imageInput); // Seek backwards from EOF long paletteStart = imageInput.getStreamPosition() - 769; @@ -400,7 +400,7 @@ public final class PCXImageReader extends ImageReaderBase { } // TODO: Candidate util method - private static long skiptToEOF(final ImageInputStream stream) throws IOException { + private static long skipToEOF(final ImageInputStream stream) throws IOException { long length = stream.length(); if (length > 0) { From 0232b63ed83ec6f1c06b806d5ae633ebbe7a09ed Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Thu, 9 Apr 2015 13:26:22 +0200 Subject: [PATCH 021/182] TMI-90: Bill of Materials (BOM) --- bom/pom.xml | 137 ++++++++++++++++++++++++++++++++++++++++++++++++++++ pom.xml | 1 + 2 files changed, 138 insertions(+) create mode 100644 bom/pom.xml diff --git a/bom/pom.xml b/bom/pom.xml new file mode 100644 index 00000000..1b84ed5b --- /dev/null +++ b/bom/pom.xml @@ -0,0 +1,137 @@ + + + 4.0.0 + + + com.twelvemonkeys + twelvemonkeys + 3.1-SNAPSHOT + + + com.twelvemonkeys.bom + bom + pom + TwelveMonkeys :: BOM + + TwelveMonkeys "Bill of Materials" (BOM). + + + + + + + com.twelvemonkeys.common + common-lang + ${project.version} + + + com.twelvemonkeys.common + common-io + ${project.version} + + + com.twelvemonkeys.common + common-image + ${project.version} + + + + + com.twelvemonkeys.imageio + imageio-core + ${project.version} + + + com.twelvemonkeys.imageio + imageio-metadata + ${project.version} + + + com.twelvemonkeys.imageio + imageio-clippath + ${project.version} + + + + + com.twelvemonkeys.imageio + imageio-bmp + ${project.version} + + + com.twelvemonkeys.imageio + imageio-icns + ${project.version} + + + com.twelvemonkeys.imageio + imageio-iff + ${project.version} + + + com.twelvemonkeys.imageio + imageio-jpeg + ${project.version} + + + com.twelvemonkeys.imageio + imageio-pcx + ${project.version} + + + com.twelvemonkeys.imageio + imageio-pdf + ${project.version} + + + com.twelvemonkeys.imageio + imageio-pict + ${project.version} + + + com.twelvemonkeys.imageio + imageio-pnm + ${project.version} + + + com.twelvemonkeys.imageio + imageio-psd + ${project.version} + + + com.twelvemonkeys.imageio + imageio-sgi + ${project.version} + + + com.twelvemonkeys.imageio + imageio-tga + ${project.version} + + + com.twelvemonkeys.imageio + imageio-thumbsdb + ${project.version} + + + com.twelvemonkeys.imageio + imageio-tiff + ${project.version} + + + + + com.twelvemonkeys.imageio + imageio-batik + ${project.version} + + + + + com.twelvemonkeys.servlet + servlet + ${project.version} + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index db1f544c..1b8a19e9 100755 --- a/pom.xml +++ b/pom.xml @@ -18,6 +18,7 @@ imageio + bom From e603ae260dad61e30d00cea1792a1c6bc25a7b6b Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Fri, 10 Apr 2015 11:06:50 +0200 Subject: [PATCH 022/182] TMI-64: Test case clean-up --- ...rTestCase.java => SVGImageReaderTest.java} | 15 ++++--- ...rTestCase.java => WMFImageReaderTest.java} | 13 +++--- .../plugins/bmp/BMPImageReaderTest.java | 4 +- .../plugins/bmp/CURImageReaderTest.java | 9 ++-- .../plugins/bmp/ICOImageReaderTest.java | 9 ++-- ...Case.java => ImageReaderAbstractTest.java} | 34 ++++++-------- .../plugins/icns/ICNSImageReaderTest.java | 11 ++--- .../plugins/iff/IFFImageReaderTest.java | 11 +++-- .../plugins/jpeg/JPEGImageReaderTest.java | 4 +- .../plugins/dcx/DCXImageReaderTest.java | 18 ++++---- .../plugins/pcx/PCXImageReaderTest.java | 7 +-- .../plugins/pict/PICTImageReaderTest.java | 7 +-- .../plugins/pnm/PNMImageReaderTest.java | 7 +-- ...rTestCase.java => PSDImageReaderTest.java} | 22 +++++----- ...TestCase.java => JPEGImageReaderTest.java} | 44 ++++++++++++++----- ...rTestCase.java => PNGImageReaderTest.java} | 44 ++++++++++++++----- .../plugins/sgi/SGIImageReaderTest.java | 11 +++-- .../plugins/tga/TGAImageReaderTest.java | 4 +- ...Case.java => ThumbsDBImageReaderTest.java} | 21 +++++---- .../plugins/tiff/TIFFImageReaderTest.java | 7 +-- 20 files changed, 171 insertions(+), 131 deletions(-) rename imageio/imageio-batik/src/test/java/com/twelvemonkeys/imageio/plugins/svg/{SVGImageReaderTestCase.java => SVGImageReaderTest.java} (91%) rename imageio/imageio-batik/src/test/java/com/twelvemonkeys/imageio/plugins/wmf/{WMFImageReaderTestCase.java => WMFImageReaderTest.java} (89%) rename imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/{ImageReaderAbstractTestCase.java => ImageReaderAbstractTest.java} (98%) rename imageio/imageio-psd/src/test/java/com/twelvemonkeys/imageio/plugins/psd/{PSDImageReaderTestCase.java => PSDImageReaderTest.java} (96%) rename imageio/imageio-reference/src/test/java/com/twelvemonkeys/imageio/reference/{JPEGImageReaderTestCase.java => JPEGImageReaderTest.java} (68%) rename imageio/imageio-reference/src/test/java/com/twelvemonkeys/imageio/reference/{PNGImageReaderTestCase.java => PNGImageReaderTest.java} (56%) rename imageio/imageio-thumbsdb/src/test/java/com/twelvemonkeys/imageio/plugins/thumbsdb/{ThumbsDBImageReaderTestCase.java => ThumbsDBImageReaderTest.java} (90%) diff --git a/imageio/imageio-batik/src/test/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReaderTestCase.java b/imageio/imageio-batik/src/test/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReaderTest.java similarity index 91% rename from imageio/imageio-batik/src/test/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReaderTestCase.java rename to imageio/imageio-batik/src/test/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReaderTest.java index 40ebd140..da223957 100755 --- a/imageio/imageio-batik/src/test/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReaderTestCase.java +++ b/imageio/imageio-batik/src/test/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReaderTest.java @@ -28,7 +28,7 @@ package com.twelvemonkeys.imageio.plugins.svg; -import com.twelvemonkeys.imageio.util.ImageReaderAbstractTestCase; +import com.twelvemonkeys.imageio.util.ImageReaderAbstractTest; import org.junit.Ignore; import org.junit.Test; @@ -40,18 +40,19 @@ import java.awt.image.BufferedImage; import java.awt.image.ImagingOpException; import java.io.IOException; import java.util.Arrays; +import java.util.Collections; import java.util.List; import static org.junit.Assert.assertEquals; /** - * SVGImageReaderTestCase + * SVGImageReaderTest * * @author Harald Kuhr * @author last modified by $Author: haraldk$ - * @version $Id: SVGImageReaderTestCase.java,v 1.0 Apr 1, 2008 10:39:17 PM haraldk Exp$ + * @version $Id: SVGImageReaderTest.java,v 1.0 Apr 1, 2008 10:39:17 PM haraldk Exp$ */ -public class SVGImageReaderTestCase extends ImageReaderAbstractTestCase { +public class SVGImageReaderTest extends ImageReaderAbstractTest { private SVGImageReaderSpi provider = new SVGImageReaderSpi(); protected List getTestData() { @@ -76,15 +77,15 @@ public class SVGImageReaderTestCase extends ImageReaderAbstractTestCase getFormatNames() { - return Arrays.asList("svg"); + return Collections.singletonList("svg"); } protected List getSuffixes() { - return Arrays.asList("svg"); + return Collections.singletonList("svg"); } protected List getMIMETypes() { - return Arrays.asList("image/svg+xml"); + return Collections.singletonList("image/svg+xml"); } @Test diff --git a/imageio/imageio-batik/src/test/java/com/twelvemonkeys/imageio/plugins/wmf/WMFImageReaderTestCase.java b/imageio/imageio-batik/src/test/java/com/twelvemonkeys/imageio/plugins/wmf/WMFImageReaderTest.java similarity index 89% rename from imageio/imageio-batik/src/test/java/com/twelvemonkeys/imageio/plugins/wmf/WMFImageReaderTestCase.java rename to imageio/imageio-batik/src/test/java/com/twelvemonkeys/imageio/plugins/wmf/WMFImageReaderTest.java index 23c55193..0a666aa6 100755 --- a/imageio/imageio-batik/src/test/java/com/twelvemonkeys/imageio/plugins/wmf/WMFImageReaderTestCase.java +++ b/imageio/imageio-batik/src/test/java/com/twelvemonkeys/imageio/plugins/wmf/WMFImageReaderTest.java @@ -28,7 +28,7 @@ package com.twelvemonkeys.imageio.plugins.wmf; -import com.twelvemonkeys.imageio.util.ImageReaderAbstractTestCase; +import com.twelvemonkeys.imageio.util.ImageReaderAbstractTest; import org.junit.Ignore; import org.junit.Test; @@ -36,20 +36,21 @@ import javax.imageio.spi.ImageReaderSpi; import java.awt.*; import java.io.IOException; import java.util.Arrays; +import java.util.Collections; import java.util.List; /** - * SVGImageReaderTestCase + * WMFImageReaderTest * * @author Harald Kuhr * @author last modified by $Author: haraldk$ - * @version $Id: SVGImageReaderTestCase.java,v 1.0 Apr 1, 2008 10:39:17 PM haraldk Exp$ + * @version $Id: WMFImageReaderTest.java,v 1.0 Apr 1, 2008 10:39:17 PM haraldk Exp$ */ -public class WMFImageReaderTestCase extends ImageReaderAbstractTestCase { +public class WMFImageReaderTest extends ImageReaderAbstractTest { private WMFImageReaderSpi provider = new WMFImageReaderSpi(); protected List getTestData() { - return Arrays.asList( + return Collections.singletonList( // TODO: Dimensions does not look right... new TestData(getClassLoaderResource("/wmf/test.wmf"), new Dimension(841, 673)) ); @@ -69,7 +70,7 @@ public class WMFImageReaderTestCase extends ImageReaderAbstractTestCase getFormatNames() { - return Arrays.asList("wmf"); + return Collections.singletonList("wmf"); } protected List getSuffixes() { diff --git a/imageio/imageio-bmp/src/test/java/com/twelvemonkeys/imageio/plugins/bmp/BMPImageReaderTest.java b/imageio/imageio-bmp/src/test/java/com/twelvemonkeys/imageio/plugins/bmp/BMPImageReaderTest.java index 8e1fb976..fcdce530 100755 --- a/imageio/imageio-bmp/src/test/java/com/twelvemonkeys/imageio/plugins/bmp/BMPImageReaderTest.java +++ b/imageio/imageio-bmp/src/test/java/com/twelvemonkeys/imageio/plugins/bmp/BMPImageReaderTest.java @@ -1,6 +1,6 @@ package com.twelvemonkeys.imageio.plugins.bmp; -import com.twelvemonkeys.imageio.util.ImageReaderAbstractTestCase; +import com.twelvemonkeys.imageio.util.ImageReaderAbstractTest; import org.junit.Test; import org.mockito.InOrder; import org.w3c.dom.Node; @@ -35,7 +35,7 @@ import static org.mockito.Mockito.*; * @author last modified by $Author: haraldk$ * @version $Id: BMPImageReaderTest.java,v 1.0 Apr 1, 2008 10:39:17 PM haraldk Exp$ */ -public class BMPImageReaderTest extends ImageReaderAbstractTestCase { +public class BMPImageReaderTest extends ImageReaderAbstractTest { protected List getTestData() { return Arrays.asList( // BMP Suite "Good" diff --git a/imageio/imageio-bmp/src/test/java/com/twelvemonkeys/imageio/plugins/bmp/CURImageReaderTest.java b/imageio/imageio-bmp/src/test/java/com/twelvemonkeys/imageio/plugins/bmp/CURImageReaderTest.java index 45a20c02..fe885d86 100755 --- a/imageio/imageio-bmp/src/test/java/com/twelvemonkeys/imageio/plugins/bmp/CURImageReaderTest.java +++ b/imageio/imageio-bmp/src/test/java/com/twelvemonkeys/imageio/plugins/bmp/CURImageReaderTest.java @@ -1,6 +1,6 @@ package com.twelvemonkeys.imageio.plugins.bmp; -import com.twelvemonkeys.imageio.util.ImageReaderAbstractTestCase; +import com.twelvemonkeys.imageio.util.ImageReaderAbstractTest; import org.junit.Ignore; import org.junit.Test; @@ -10,6 +10,7 @@ import java.awt.*; import java.awt.image.BufferedImage; import java.io.IOException; import java.util.Arrays; +import java.util.Collections; import java.util.List; import static org.junit.Assert.*; @@ -21,7 +22,7 @@ import static org.junit.Assert.*; * @author last modified by $Author: haraldk$ * @version $Id: CURImageReaderTest.java,v 1.0 Apr 1, 2008 10:39:17 PM haraldk Exp$ */ -public class CURImageReaderTest extends ImageReaderAbstractTestCase { +public class CURImageReaderTest extends ImageReaderAbstractTest { protected List getTestData() { return Arrays.asList( new TestData(getClassLoaderResource("/cur/hand.cur"), new Dimension(32, 32)), @@ -43,11 +44,11 @@ public class CURImageReaderTest extends ImageReaderAbstractTestCase getFormatNames() { - return Arrays.asList("cur"); + return Collections.singletonList("cur"); } protected List getSuffixes() { - return Arrays.asList("cur"); + return Collections.singletonList("cur"); } protected List getMIMETypes() { diff --git a/imageio/imageio-bmp/src/test/java/com/twelvemonkeys/imageio/plugins/bmp/ICOImageReaderTest.java b/imageio/imageio-bmp/src/test/java/com/twelvemonkeys/imageio/plugins/bmp/ICOImageReaderTest.java index 858a26a5..b169abe2 100755 --- a/imageio/imageio-bmp/src/test/java/com/twelvemonkeys/imageio/plugins/bmp/ICOImageReaderTest.java +++ b/imageio/imageio-bmp/src/test/java/com/twelvemonkeys/imageio/plugins/bmp/ICOImageReaderTest.java @@ -1,6 +1,6 @@ package com.twelvemonkeys.imageio.plugins.bmp; -import com.twelvemonkeys.imageio.util.ImageReaderAbstractTestCase; +import com.twelvemonkeys.imageio.util.ImageReaderAbstractTest; import org.junit.Ignore; import org.junit.Test; @@ -8,6 +8,7 @@ import javax.imageio.spi.ImageReaderSpi; import java.awt.*; import java.io.IOException; import java.util.Arrays; +import java.util.Collections; import java.util.List; /** @@ -17,7 +18,7 @@ import java.util.List; * @author last modified by $Author: haraldk$ * @version $Id: ICOImageReaderTest.java,v 1.0 Apr 1, 2008 10:39:17 PM haraldk Exp$ */ -public class ICOImageReaderTest extends ImageReaderAbstractTestCase { +public class ICOImageReaderTest extends ImageReaderAbstractTest { protected List getTestData() { return Arrays.asList( new TestData( @@ -56,11 +57,11 @@ public class ICOImageReaderTest extends ImageReaderAbstractTestCase getFormatNames() { - return Arrays.asList("ico"); + return Collections.singletonList("ico"); } protected List getSuffixes() { - return Arrays.asList("ico"); + return Collections.singletonList("ico"); } protected List getMIMETypes() { diff --git a/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/ImageReaderAbstractTestCase.java b/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/ImageReaderAbstractTest.java similarity index 98% rename from imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/ImageReaderAbstractTestCase.java rename to imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/ImageReaderAbstractTest.java index 7b1f2a14..a92f75c2 100644 --- a/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/ImageReaderAbstractTestCase.java +++ b/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/ImageReaderAbstractTest.java @@ -57,13 +57,13 @@ import static org.junit.Assert.*; import static org.mockito.Mockito.*; /** - * ImageReaderAbstractTestCase + * ImageReaderAbstractTest * * @author Harald Kuhr * @author last modified by $Author: haraldk$ - * @version $Id: ImageReaderAbstractTestCase.java,v 1.0 Apr 1, 2008 10:36:46 PM haraldk Exp$ + * @version $Id: ImageReaderAbstractTest.java,v 1.0 Apr 1, 2008 10:36:46 PM haraldk Exp$ */ -public abstract class ImageReaderAbstractTestCase { +public abstract class ImageReaderAbstractTest { // TODO: Should we really test if the provider is installed? // - Pro: Tests the META-INF/services config // - Con: Not all providers should be installed at runtime... @@ -83,10 +83,7 @@ public abstract class ImageReaderAbstractTestCase { try { return getReaderClass().newInstance(); } - catch (InstantiationException e) { - throw new RuntimeException(e); - } - catch (IllegalAccessException e) { + catch (InstantiationException | IllegalAccessException e) { throw new RuntimeException(e); } } @@ -1002,7 +999,7 @@ public abstract class ImageReaderAbstractTestCase { /*aspectRatio =*/ reader.getAspectRatio(-1); //assertEquals("Wrong aspect ratio", data.getDimension().width / (float) data.getDimension().height, aspectRatio, 0f); } - catch (IndexOutOfBoundsException expected) { + catch (IndexOutOfBoundsException ignore) { } catch (IOException e) { fail("Could not read image aspect ratio" + e); @@ -1391,7 +1388,7 @@ public abstract class ImageReaderAbstractTestCase { reader.read(0, param); fail("Expected to throw exception with illegal type specifier"); } - catch (IIOException expected) { + catch (IIOException | IllegalArgumentException expected) { // TODO: This is thrown by ImageReader.getDestination. But are we happy with that? String message = expected.getMessage().toLowerCase(); if (!(message.contains("destination") && message.contains("type"))) { @@ -1399,23 +1396,16 @@ public abstract class ImageReaderAbstractTestCase { throw expected; } } - catch (IllegalArgumentException expected) { - String message = expected.getMessage().toLowerCase(); - if (!(message.contains("destination") && message.contains("type"))) { - // Allow this to bubble up, du to a bug in the Sun PNGImageReader - throw expected; - } - } } } private List createIllegalTypes(Iterator pValidTypes) { - List allTypes = new ArrayList(); + List allTypes = new ArrayList<>(); for (int i = BufferedImage.TYPE_INT_RGB; i < BufferedImage.TYPE_BYTE_INDEXED; i++) { allTypes.add(ImageTypeSpecifier.createFromBufferedImageType(i)); } - List illegalTypes = new ArrayList(allTypes); + List illegalTypes = new ArrayList<>(allTypes); while (pValidTypes.hasNext()) { ImageTypeSpecifier valid = pValidTypes.next(); boolean removed = illegalTypes.remove(valid); @@ -1454,6 +1444,7 @@ public abstract class ImageReaderAbstractTestCase { assertEquals(reader.getHeight(0) + point.y, image.getHeight()); } + @SuppressWarnings("ConstantConditions") @Test public void testSetDestinationOffsetNull() throws IOException { final ImageReader reader = createReader(); @@ -1629,12 +1620,12 @@ public abstract class ImageReaderAbstractTestCase { throw new IllegalArgumentException("input == null"); } - sizes = new ArrayList(); - images = new ArrayList(); + sizes = new ArrayList<>(); + images = new ArrayList<>(); List sizes = pSizes; if (sizes == null) { - sizes = new ArrayList(); + sizes = new ArrayList<>(); if (pImages != null) { for (BufferedImage image : pImages) { sizes.add(new Dimension(image.getWidth(), image.getHeight())); @@ -1690,6 +1681,7 @@ public abstract class ImageReaderAbstractTestCase { return sizes.get(pIndex); } + @SuppressWarnings("unused") public BufferedImage getImage(final int pIndex) { return images.get(pIndex); } diff --git a/imageio/imageio-icns/src/test/java/com/twelvemonkeys/imageio/plugins/icns/ICNSImageReaderTest.java b/imageio/imageio-icns/src/test/java/com/twelvemonkeys/imageio/plugins/icns/ICNSImageReaderTest.java index 8dc95484..84131b60 100644 --- a/imageio/imageio-icns/src/test/java/com/twelvemonkeys/imageio/plugins/icns/ICNSImageReaderTest.java +++ b/imageio/imageio-icns/src/test/java/com/twelvemonkeys/imageio/plugins/icns/ICNSImageReaderTest.java @@ -28,7 +28,7 @@ package com.twelvemonkeys.imageio.plugins.icns; -import com.twelvemonkeys.imageio.util.ImageReaderAbstractTestCase; +import com.twelvemonkeys.imageio.util.ImageReaderAbstractTest; import org.junit.Ignore; import org.junit.Test; @@ -37,6 +37,7 @@ import javax.imageio.spi.ImageReaderSpi; import java.awt.*; import java.io.IOException; import java.util.Arrays; +import java.util.Collections; import java.util.List; /** @@ -46,7 +47,7 @@ import java.util.List; * @author last modified by $Author: haraldk$ * @version $Id: ICNSImageReaderTest.java,v 1.0 25.10.11 18:44 haraldk Exp$ */ -public class ICNSImageReaderTest extends ImageReaderAbstractTestCase { +public class ICNSImageReaderTest extends ImageReaderAbstractTest { @Override protected List getTestData() { return Arrays.asList( @@ -119,17 +120,17 @@ public class ICNSImageReaderTest extends ImageReaderAbstractTestCase { @Override protected List getFormatNames() { - return Arrays.asList("icns"); + return Collections.singletonList("icns"); } @Override protected List getSuffixes() { - return Arrays.asList("icns"); + return Collections.singletonList("icns"); } @Override protected List getMIMETypes() { - return Arrays.asList("image/x-apple-icons"); + return Collections.singletonList("image/x-apple-icons"); } @Test diff --git a/imageio/imageio-iff/src/test/java/com/twelvemonkeys/imageio/plugins/iff/IFFImageReaderTest.java b/imageio/imageio-iff/src/test/java/com/twelvemonkeys/imageio/plugins/iff/IFFImageReaderTest.java index 11d88b74..90783b11 100755 --- a/imageio/imageio-iff/src/test/java/com/twelvemonkeys/imageio/plugins/iff/IFFImageReaderTest.java +++ b/imageio/imageio-iff/src/test/java/com/twelvemonkeys/imageio/plugins/iff/IFFImageReaderTest.java @@ -28,7 +28,7 @@ package com.twelvemonkeys.imageio.plugins.iff; -import com.twelvemonkeys.imageio.util.ImageReaderAbstractTestCase; +import com.twelvemonkeys.imageio.util.ImageReaderAbstractTest; import org.junit.Test; import javax.imageio.ImageIO; @@ -39,11 +39,10 @@ import java.awt.image.ColorModel; import java.awt.image.IndexColorModel; import java.io.IOException; import java.util.Arrays; +import java.util.Collections; import java.util.List; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; +import static org.junit.Assert.*; /** * IFFImageReaderTestCase @@ -52,7 +51,7 @@ import static org.junit.Assert.assertTrue; * @author last modified by $Author: haraldk$ * @version $Id: IFFImageReaderTestCase.java,v 1.0 Apr 1, 2008 10:39:17 PM haraldk Exp$ */ -public class IFFImageReaderTest extends ImageReaderAbstractTestCase { +public class IFFImageReaderTest extends ImageReaderAbstractTest { protected List getTestData() { return Arrays.asList( // 32 bit - Ok @@ -93,7 +92,7 @@ public class IFFImageReaderTest extends ImageReaderAbstractTestCase getFormatNames() { - return Arrays.asList("iff"); + return Collections.singletonList("iff"); } protected List getSuffixes() { diff --git a/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReaderTest.java b/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReaderTest.java index 97b0ff22..7b4c460b 100644 --- a/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReaderTest.java +++ b/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReaderTest.java @@ -28,7 +28,7 @@ package com.twelvemonkeys.imageio.plugins.jpeg; -import com.twelvemonkeys.imageio.util.ImageReaderAbstractTestCase; +import com.twelvemonkeys.imageio.util.ImageReaderAbstractTest; import org.hamcrest.core.IsInstanceOf; import org.junit.Ignore; import org.junit.Test; @@ -73,7 +73,7 @@ import static org.mockito.Mockito.verify; * @author last modified by $Author: haraldk$ * @version $Id: JPEGImageReaderTest.java,v 1.0 24.01.11 22.04 haraldk Exp$ */ -public class JPEGImageReaderTest extends ImageReaderAbstractTestCase { +public class JPEGImageReaderTest extends ImageReaderAbstractTest { private static final JPEGImageReaderSpi SPI = new JPEGImageReaderSpi(lookupDelegateProvider()); diff --git a/imageio/imageio-pcx/src/test/java/com/twelvemonkeys/imageio/plugins/dcx/DCXImageReaderTest.java b/imageio/imageio-pcx/src/test/java/com/twelvemonkeys/imageio/plugins/dcx/DCXImageReaderTest.java index e5a9cc5b..51ef59f3 100755 --- a/imageio/imageio-pcx/src/test/java/com/twelvemonkeys/imageio/plugins/dcx/DCXImageReaderTest.java +++ b/imageio/imageio-pcx/src/test/java/com/twelvemonkeys/imageio/plugins/dcx/DCXImageReaderTest.java @@ -28,15 +28,13 @@ package com.twelvemonkeys.imageio.plugins.dcx; -import java.awt.*; -import java.io.IOException; -import java.util.Arrays; -import java.util.List; +import com.twelvemonkeys.imageio.util.ImageReaderAbstractTest; import javax.imageio.spi.ImageReaderSpi; - -import com.twelvemonkeys.imageio.util.ImageReaderAbstractTestCase; -import org.junit.Test; +import java.awt.*; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; /** * DCXImageReaderTest @@ -45,10 +43,10 @@ import org.junit.Test; * @author last modified by $Author: haraldk$ * @version $Id: DCXImageReaderTest.java,v 1.0 03.07.14 22:28 haraldk Exp$ */ -public class DCXImageReaderTest extends ImageReaderAbstractTestCase { +public class DCXImageReaderTest extends ImageReaderAbstractTest { @Override protected List getTestData() { - return Arrays.asList( + return Collections.singletonList( new TestData(getClassLoaderResource("/dcx/input.dcx"), new Dimension(70, 46)) // RLE encoded RGB (the only sample I've found) ); } @@ -75,7 +73,7 @@ public class DCXImageReaderTest extends ImageReaderAbstractTestCase getSuffixes() { - return Arrays.asList("dcx"); + return Collections.singletonList("dcx"); } @Override diff --git a/imageio/imageio-pcx/src/test/java/com/twelvemonkeys/imageio/plugins/pcx/PCXImageReaderTest.java b/imageio/imageio-pcx/src/test/java/com/twelvemonkeys/imageio/plugins/pcx/PCXImageReaderTest.java index 69d2cc86..078e6a05 100755 --- a/imageio/imageio-pcx/src/test/java/com/twelvemonkeys/imageio/plugins/pcx/PCXImageReaderTest.java +++ b/imageio/imageio-pcx/src/test/java/com/twelvemonkeys/imageio/plugins/pcx/PCXImageReaderTest.java @@ -28,13 +28,14 @@ package com.twelvemonkeys.imageio.plugins.pcx; -import com.twelvemonkeys.imageio.util.ImageReaderAbstractTestCase; +import com.twelvemonkeys.imageio.util.ImageReaderAbstractTest; import org.junit.Test; import javax.imageio.spi.ImageReaderSpi; import java.awt.*; import java.io.IOException; import java.util.Arrays; +import java.util.Collections; import java.util.List; /** @@ -44,7 +45,7 @@ import java.util.List; * @author last modified by $Author: haraldk$ * @version $Id: PCXImageReaderTest.java,v 1.0 03.07.14 22:28 haraldk Exp$ */ -public class PCXImageReaderTest extends ImageReaderAbstractTestCase { +public class PCXImageReaderTest extends ImageReaderAbstractTest { @Override protected List getTestData() { return Arrays.asList( @@ -91,7 +92,7 @@ public class PCXImageReaderTest extends ImageReaderAbstractTestCase getSuffixes() { - return Arrays.asList("pcx"); + return Collections.singletonList("pcx"); } @Override diff --git a/imageio/imageio-pict/src/test/java/com/twelvemonkeys/imageio/plugins/pict/PICTImageReaderTest.java b/imageio/imageio-pict/src/test/java/com/twelvemonkeys/imageio/plugins/pict/PICTImageReaderTest.java index 41efe9f5..9c46904c 100644 --- a/imageio/imageio-pict/src/test/java/com/twelvemonkeys/imageio/plugins/pict/PICTImageReaderTest.java +++ b/imageio/imageio-pict/src/test/java/com/twelvemonkeys/imageio/plugins/pict/PICTImageReaderTest.java @@ -2,7 +2,7 @@ package com.twelvemonkeys.imageio.plugins.pict; import com.twelvemonkeys.imageio.stream.ByteArrayImageInputStream; import com.twelvemonkeys.imageio.stream.ByteArrayImageInputStreamSpi; -import com.twelvemonkeys.imageio.util.ImageReaderAbstractTestCase; +import com.twelvemonkeys.imageio.util.ImageReaderAbstractTest; import org.junit.Test; import javax.imageio.spi.IIORegistry; @@ -11,6 +11,7 @@ import java.awt.*; import java.awt.image.BufferedImage; import java.io.IOException; import java.util.Arrays; +import java.util.Collections; import java.util.List; import static org.junit.Assert.assertFalse; @@ -22,7 +23,7 @@ import static org.junit.Assert.assertFalse; * @author last modified by $Author: haraldk$ * @version $Id: ICOImageReaderTestCase.java,v 1.0 Apr 1, 2008 10:39:17 PM haraldk Exp$ */ -public class PICTImageReaderTest extends ImageReaderAbstractTestCase { +public class PICTImageReaderTest extends ImageReaderAbstractTest { static { IIORegistry.getDefaultInstance().registerServiceProvider(new ByteArrayImageInputStreamSpi()); @@ -71,7 +72,7 @@ public class PICTImageReaderTest extends ImageReaderAbstractTestCase getFormatNames() { - return Arrays.asList("pict"); + return Collections.singletonList("pict"); } protected List getSuffixes() { diff --git a/imageio/imageio-pnm/src/test/java/com/twelvemonkeys/imageio/plugins/pnm/PNMImageReaderTest.java b/imageio/imageio-pnm/src/test/java/com/twelvemonkeys/imageio/plugins/pnm/PNMImageReaderTest.java index 2efceaa6..c8a3dde1 100755 --- a/imageio/imageio-pnm/src/test/java/com/twelvemonkeys/imageio/plugins/pnm/PNMImageReaderTest.java +++ b/imageio/imageio-pnm/src/test/java/com/twelvemonkeys/imageio/plugins/pnm/PNMImageReaderTest.java @@ -28,7 +28,7 @@ package com.twelvemonkeys.imageio.plugins.pnm; -import com.twelvemonkeys.imageio.util.ImageReaderAbstractTestCase; +import com.twelvemonkeys.imageio.util.ImageReaderAbstractTest; import org.junit.Test; import javax.imageio.ImageReader; @@ -39,9 +39,10 @@ import java.io.IOException; import java.util.Arrays; import java.util.List; -import static org.junit.Assert.*; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; -public class PNMImageReaderTest extends ImageReaderAbstractTestCase{ +public class PNMImageReaderTest extends ImageReaderAbstractTest { @Override protected List getTestData() { return Arrays.asList( new TestData(getClassLoaderResource("/ppm/lena.ppm"), new Dimension(128, 128)), // P6 (PPM RAW) diff --git a/imageio/imageio-psd/src/test/java/com/twelvemonkeys/imageio/plugins/psd/PSDImageReaderTestCase.java b/imageio/imageio-psd/src/test/java/com/twelvemonkeys/imageio/plugins/psd/PSDImageReaderTest.java similarity index 96% rename from imageio/imageio-psd/src/test/java/com/twelvemonkeys/imageio/plugins/psd/PSDImageReaderTestCase.java rename to imageio/imageio-psd/src/test/java/com/twelvemonkeys/imageio/plugins/psd/PSDImageReaderTest.java index a5808c20..cc3235f5 100755 --- a/imageio/imageio-psd/src/test/java/com/twelvemonkeys/imageio/plugins/psd/PSDImageReaderTestCase.java +++ b/imageio/imageio-psd/src/test/java/com/twelvemonkeys/imageio/plugins/psd/PSDImageReaderTest.java @@ -28,32 +28,30 @@ package com.twelvemonkeys.imageio.plugins.psd; -import com.twelvemonkeys.imageio.util.ImageReaderAbstractTestCase; +import com.twelvemonkeys.imageio.util.ImageReaderAbstractTest; import com.twelvemonkeys.imageio.util.ProgressListenerBase; import org.junit.Test; import javax.imageio.ImageReadParam; +import javax.imageio.ImageReader; import javax.imageio.ImageTypeSpecifier; import javax.imageio.spi.ImageReaderSpi; -import javax.imageio.ImageReader; import java.awt.*; import java.awt.image.BufferedImage; -import java.util.Arrays; -import java.util.Iterator; -import java.util.List; -import java.util.ArrayList; import java.io.IOException; +import java.util.*; +import java.util.List; import static org.junit.Assert.*; /** - * PSDImageReaderTestCase + * PSDImageReaderTest * * @author Harald Kuhr * @author last modified by $Author: haraldk$ - * @version $Id: PSDImageReaderTestCase.java,v 1.0 Apr 1, 2008 10:39:17 PM haraldk Exp$ + * @version $Id: PSDImageReaderTest.java,v 1.0 Apr 1, 2008 10:39:17 PM haraldk Exp$ */ -public class PSDImageReaderTestCase extends ImageReaderAbstractTestCase { +public class PSDImageReaderTest extends ImageReaderAbstractTest { private static final ImageReaderSpi provider = new PSDImageReaderSpi(); @@ -110,11 +108,11 @@ public class PSDImageReaderTestCase extends ImageReaderAbstractTestCase getFormatNames() { - return Arrays.asList("psd"); + return Collections.singletonList("psd"); } protected List getSuffixes() { - return Arrays.asList("psd"); + return Collections.singletonList("psd"); } protected List getMIMETypes() { @@ -243,7 +241,7 @@ public class PSDImageReaderTestCase extends ImageReaderAbstractTestCase sequnce = new ArrayList(); + final List sequnce = new ArrayList<>(); imageReader.addIIOReadProgressListener(new ProgressListenerBase() { private float mLastPercentageDone = 0; diff --git a/imageio/imageio-reference/src/test/java/com/twelvemonkeys/imageio/reference/JPEGImageReaderTestCase.java b/imageio/imageio-reference/src/test/java/com/twelvemonkeys/imageio/reference/JPEGImageReaderTest.java similarity index 68% rename from imageio/imageio-reference/src/test/java/com/twelvemonkeys/imageio/reference/JPEGImageReaderTestCase.java rename to imageio/imageio-reference/src/test/java/com/twelvemonkeys/imageio/reference/JPEGImageReaderTest.java index 69da521b..be36f205 100644 --- a/imageio/imageio-reference/src/test/java/com/twelvemonkeys/imageio/reference/JPEGImageReaderTestCase.java +++ b/imageio/imageio-reference/src/test/java/com/twelvemonkeys/imageio/reference/JPEGImageReaderTest.java @@ -1,34 +1,47 @@ package com.twelvemonkeys.imageio.reference; -import com.sun.imageio.plugins.jpeg.JPEGImageReader; -import com.sun.imageio.plugins.jpeg.JPEGImageReaderSpi; -import com.twelvemonkeys.imageio.util.ImageReaderAbstractTestCase; +import com.twelvemonkeys.imageio.util.ImageReaderAbstractTest; import com.twelvemonkeys.lang.SystemUtil; import org.junit.Ignore; import org.junit.Test; import javax.imageio.IIOException; +import javax.imageio.ImageReader; import javax.imageio.spi.ImageReaderSpi; import java.awt.*; import java.io.IOException; import java.util.Arrays; +import java.util.Collections; import java.util.List; +import static org.junit.Assume.assumeNoException; + /** - * JPEGImageReaderTestCase + * JPEGImageReaderTest * * @author Harald Kuhr * @author last modified by $Author: haraldk$ - * @version $Id: JPEGImageReaderTestCase.java,v 1.0 Oct 9, 2009 3:37:25 PM haraldk Exp$ + * @version $Id: JPEGImageReaderTest.java,v 1.0 Oct 9, 2009 3:37:25 PM haraldk Exp$ */ -public class JPEGImageReaderTestCase extends ImageReaderAbstractTestCase { +public class JPEGImageReaderTest extends ImageReaderAbstractTest { private static final boolean IS_JAVA_6 = SystemUtil.isClassAvailable("java.util.Deque"); - protected JPEGImageReaderSpi provider = new JPEGImageReaderSpi(); + protected final ImageReaderSpi provider = lookupSpi(); + + private ImageReaderSpi lookupSpi() { + try { + return (ImageReaderSpi) Class.forName("com.sun.imageio.plugins.jpeg.JPEGImageReaderSpi").newInstance(); + } + catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) { + assumeNoException(e); + } + + return null; + } @Override protected List getTestData() { - return Arrays.asList( + return Collections.singletonList( new TestData(getClassLoaderResource("/jpeg/R-7439-1151526181.jpeg"), new Dimension(386, 396)) ); } @@ -39,14 +52,21 @@ public class JPEGImageReaderTestCase extends ImageReaderAbstractTestCase getReaderClass() { - return JPEGImageReader.class; + protected Class getReaderClass() { + try { + return Class.forName("com.sun.imageio.plugins.jpeg.JPEGImageReader"); + } + catch (ClassNotFoundException e) { + assumeNoException(e); + } + + return null; } @Override - protected JPEGImageReader createReader() { + protected ImageReader createReader() { try { - return (JPEGImageReader) provider.createReaderInstance(); + return provider.createReaderInstance(); } catch (IOException e) { throw new RuntimeException(e); diff --git a/imageio/imageio-reference/src/test/java/com/twelvemonkeys/imageio/reference/PNGImageReaderTestCase.java b/imageio/imageio-reference/src/test/java/com/twelvemonkeys/imageio/reference/PNGImageReaderTest.java similarity index 56% rename from imageio/imageio-reference/src/test/java/com/twelvemonkeys/imageio/reference/PNGImageReaderTestCase.java rename to imageio/imageio-reference/src/test/java/com/twelvemonkeys/imageio/reference/PNGImageReaderTest.java index 8b1a7269..4bbf5522 100644 --- a/imageio/imageio-reference/src/test/java/com/twelvemonkeys/imageio/reference/PNGImageReaderTestCase.java +++ b/imageio/imageio-reference/src/test/java/com/twelvemonkeys/imageio/reference/PNGImageReaderTest.java @@ -1,30 +1,43 @@ package com.twelvemonkeys.imageio.reference; -import com.sun.imageio.plugins.png.PNGImageReader; -import com.sun.imageio.plugins.png.PNGImageReaderSpi; -import com.twelvemonkeys.imageio.util.ImageReaderAbstractTestCase; +import com.twelvemonkeys.imageio.util.ImageReaderAbstractTest; import org.junit.Test; import javax.imageio.IIOException; +import javax.imageio.ImageReader; import javax.imageio.spi.ImageReaderSpi; import java.awt.*; import java.io.IOException; import java.util.Arrays; +import java.util.Collections; import java.util.List; +import static org.junit.Assume.assumeNoException; + /** - * PNGImageReaderTestCase + * PNGImageReaderTest * * @author Harald Kuhr * @author last modified by $Author: haraldk$ - * @version $Id: PNGImageReaderTestCase.java,v 1.0 Oct 9, 2009 3:37:25 PM haraldk Exp$ + * @version $Id: PNGImageReaderTest.java,v 1.0 Oct 9, 2009 3:37:25 PM haraldk Exp$ */ -public class PNGImageReaderTestCase extends ImageReaderAbstractTestCase { - protected PNGImageReaderSpi provider = new PNGImageReaderSpi(); +public class PNGImageReaderTest extends ImageReaderAbstractTest { + protected final ImageReaderSpi provider = lookupSpi(); + + private ImageReaderSpi lookupSpi() { + try { + return (ImageReaderSpi) Class.forName("com.sun.imageio.plugins.png.PNGImageReaderSpi").newInstance(); + } + catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) { + assumeNoException(e); + } + + return null; + } @Override protected List getTestData() { - return Arrays.asList( + return Collections.singletonList( new TestData(getClassLoaderResource("/png/12monkeys-splash.png"), new Dimension(300, 410)) ); } @@ -35,14 +48,21 @@ public class PNGImageReaderTestCase extends ImageReaderAbstractTestCase getReaderClass() { - return PNGImageReader.class; + protected Class getReaderClass() { + try { + return Class.forName("com.sun.imageio.plugins.png.PNGImageReader"); + } + catch (ClassNotFoundException e) { + assumeNoException(e); + } + + return null; } @Override - protected PNGImageReader createReader() { + protected ImageReader createReader() { try { - return (PNGImageReader) provider.createReaderInstance(); + return provider.createReaderInstance(); } catch (IOException e) { throw new RuntimeException(e); diff --git a/imageio/imageio-sgi/src/test/java/com/twelvemonkeys/imageio/plugins/sgi/SGIImageReaderTest.java b/imageio/imageio-sgi/src/test/java/com/twelvemonkeys/imageio/plugins/sgi/SGIImageReaderTest.java index 209d8efd..8d6d8112 100755 --- a/imageio/imageio-sgi/src/test/java/com/twelvemonkeys/imageio/plugins/sgi/SGIImageReaderTest.java +++ b/imageio/imageio-sgi/src/test/java/com/twelvemonkeys/imageio/plugins/sgi/SGIImageReaderTest.java @@ -28,11 +28,12 @@ package com.twelvemonkeys.imageio.plugins.sgi; -import com.twelvemonkeys.imageio.util.ImageReaderAbstractTestCase; +import com.twelvemonkeys.imageio.util.ImageReaderAbstractTest; import javax.imageio.spi.ImageReaderSpi; import java.awt.*; import java.util.Arrays; +import java.util.Collections; import java.util.List; /** @@ -42,10 +43,10 @@ import java.util.List; * @author last modified by $Author: haraldk$ * @version $Id: SGIImageReaderTest.java,v 1.0 03.07.14 22:28 haraldk Exp$ */ -public class SGIImageReaderTest extends ImageReaderAbstractTestCase { +public class SGIImageReaderTest extends ImageReaderAbstractTest { @Override protected List getTestData() { - return Arrays.asList( + return Collections.singletonList( new TestData(getClassLoaderResource("/sgi/MARBLES.SGI"), new Dimension(1419, 1001)) // RLE encoded RGB ); } @@ -72,9 +73,7 @@ public class SGIImageReaderTest extends ImageReaderAbstractTestCase getSuffixes() { - return Arrays.asList( - "sgi" - ); + return Collections.singletonList("sgi"); } @Override diff --git a/imageio/imageio-tga/src/test/java/com/twelvemonkeys/imageio/plugins/tga/TGAImageReaderTest.java b/imageio/imageio-tga/src/test/java/com/twelvemonkeys/imageio/plugins/tga/TGAImageReaderTest.java index 59a85d49..601df0a9 100755 --- a/imageio/imageio-tga/src/test/java/com/twelvemonkeys/imageio/plugins/tga/TGAImageReaderTest.java +++ b/imageio/imageio-tga/src/test/java/com/twelvemonkeys/imageio/plugins/tga/TGAImageReaderTest.java @@ -28,7 +28,7 @@ package com.twelvemonkeys.imageio.plugins.tga; -import com.twelvemonkeys.imageio.util.ImageReaderAbstractTestCase; +import com.twelvemonkeys.imageio.util.ImageReaderAbstractTest; import javax.imageio.spi.ImageReaderSpi; import java.awt.*; @@ -42,7 +42,7 @@ import java.util.List; * @author last modified by $Author: haraldk$ * @version $Id: TGAImageReaderTest.java,v 1.0 03.07.14 22:28 haraldk Exp$ */ -public class TGAImageReaderTest extends ImageReaderAbstractTestCase { +public class TGAImageReaderTest extends ImageReaderAbstractTest { @Override protected List getTestData() { return Arrays.asList( diff --git a/imageio/imageio-thumbsdb/src/test/java/com/twelvemonkeys/imageio/plugins/thumbsdb/ThumbsDBImageReaderTestCase.java b/imageio/imageio-thumbsdb/src/test/java/com/twelvemonkeys/imageio/plugins/thumbsdb/ThumbsDBImageReaderTest.java similarity index 90% rename from imageio/imageio-thumbsdb/src/test/java/com/twelvemonkeys/imageio/plugins/thumbsdb/ThumbsDBImageReaderTestCase.java rename to imageio/imageio-thumbsdb/src/test/java/com/twelvemonkeys/imageio/plugins/thumbsdb/ThumbsDBImageReaderTest.java index ee1e7440..8b6ad255 100644 --- a/imageio/imageio-thumbsdb/src/test/java/com/twelvemonkeys/imageio/plugins/thumbsdb/ThumbsDBImageReaderTestCase.java +++ b/imageio/imageio-thumbsdb/src/test/java/com/twelvemonkeys/imageio/plugins/thumbsdb/ThumbsDBImageReaderTest.java @@ -29,7 +29,7 @@ package com.twelvemonkeys.imageio.plugins.thumbsdb; import com.twelvemonkeys.imageio.stream.BufferedImageInputStream; -import com.twelvemonkeys.imageio.util.ImageReaderAbstractTestCase; +import com.twelvemonkeys.imageio.util.ImageReaderAbstractTest; import com.twelvemonkeys.io.ole2.CompoundDocument; import com.twelvemonkeys.io.ole2.Entry; import com.twelvemonkeys.lang.SystemUtil; @@ -43,16 +43,19 @@ import java.awt.*; import java.io.IOException; import java.nio.ByteOrder; import java.util.Arrays; +import java.util.Collections; import java.util.List; +import static org.junit.Assert.assertNotNull; + /** - * ICOImageReaderTestCase + * ICOImageReaderTest * * @author Harald Kuhr * @author last modified by $Author: haraldk$ - * @version $Id: ICOImageReaderTestCase.java,v 1.0 Apr 1, 2008 10:39:17 PM haraldk Exp$ + * @version $Id: ICOImageReaderTest.java,v 1.0 Apr 1, 2008 10:39:17 PM haraldk Exp$ */ -public class ThumbsDBImageReaderTestCase extends ImageReaderAbstractTestCase { +public class ThumbsDBImageReaderTest extends ImageReaderAbstractTest { private static final boolean IS_JAVA_6 = SystemUtil.isClassAvailable("java.util.Deque"); private ThumbsDBImageReaderSpi provider = new ThumbsDBImageReaderSpi(); @@ -97,15 +100,15 @@ public class ThumbsDBImageReaderTestCase extends ImageReaderAbstractTestCase getFormatNames() { - return Arrays.asList("thumbs"); + return Collections.singletonList("thumbs"); } protected List getSuffixes() { - return Arrays.asList("db"); + return Collections.singletonList("db"); } protected List getMIMETypes() { - return Arrays.asList("image/x-thumbs-db"); + return Collections.singletonList("image/x-thumbs-db"); } @Test @@ -115,7 +118,9 @@ public class ThumbsDBImageReaderTestCase extends ImageReaderAbstractTestCase { +public class TIFFImageReaderTest extends ImageReaderAbstractTest { private static final TIFFImageReaderSpi SPI = new TIFFImageReaderSpi(); @@ -108,7 +109,7 @@ public class TIFFImageReaderTest extends ImageReaderAbstractTestCase getMIMETypes() { - return Arrays.asList("image/tiff"); + return Collections.singletonList("image/tiff"); } From 5c8d4fad8719c089b37f5ffafc0b4a7f111e10a8 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Fri, 10 Apr 2015 11:20:42 +0200 Subject: [PATCH 023/182] TMI-64: Removed direct creation of JPEGImageReader. --- .../imageio/plugins/tiff/TIFFImageReader.java | 45 ++++++++++++++++--- 1 file changed, 39 insertions(+), 6 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 685878b6..320bc4b6 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 @@ -28,7 +28,6 @@ package com.twelvemonkeys.imageio.plugins.tiff; -import com.sun.imageio.plugins.jpeg.JPEGImageReader; import com.twelvemonkeys.imageio.ImageReaderBase; import com.twelvemonkeys.imageio.color.ColorSpaces; import com.twelvemonkeys.imageio.metadata.CompoundDirectory; @@ -52,6 +51,7 @@ import com.twelvemonkeys.xml.XMLSerializer; import javax.imageio.*; import javax.imageio.event.IIOReadWarningListener; import javax.imageio.metadata.IIOMetadata; +import javax.imageio.metadata.IIOMetadataFormatImpl; import javax.imageio.plugins.jpeg.JPEGImageReadParam; import javax.imageio.spi.IIORegistry; import javax.imageio.spi.ImageReaderSpi; @@ -62,6 +62,8 @@ import java.awt.color.ColorSpace; import java.awt.color.ICC_Profile; import java.awt.image.*; import java.io.*; +import java.lang.reflect.Constructor; +import java.lang.reflect.InvocationTargetException; import java.nio.ByteOrder; import java.util.*; import java.util.zip.Inflater; @@ -735,8 +737,7 @@ public class TIFFImageReader extends ImageReaderBase { // TODO: Refactor all JPEG reading out to separate JPEG support class? // TODO: Cache the JPEG reader for later use? Remember to reset to avoid resource leaks - // TIFF is strictly ISO JPEG, so we should probably stick to the standard reader - ImageReader jpegReader = new JPEGImageReader(getOriginatingProvider()); + ImageReader jpegReader = createJPEGDelegate(); JPEGImageReadParam jpegParam = (JPEGImageReadParam) jpegReader.getDefaultReadParam(); // JPEG_TABLES should be a full JPEG 'abbreviated table specification', containing: @@ -825,8 +826,7 @@ public class TIFFImageReader extends ImageReaderBase { // May use normal tiling?? - // TIFF is strictly ISO JPEG, so we should probably stick to the standard reader - jpegReader = new JPEGImageReader(getOriginatingProvider()); + jpegReader = createJPEGDelegate(); jpegParam = (JPEGImageReadParam) jpegReader.getDefaultReadParam(); // 513/JPEGInterchangeFormat (may be absent...) @@ -1039,11 +1039,37 @@ public class TIFFImageReader extends ImageReaderBase { throw new IIOException("Unknown TIFF Compression value: " + compression); } + // TODO: Convert color space from source to destination + processImageComplete(); return destination; } + private ImageReader createJPEGDelegate() throws IIOException { + // TIFF is strictly ISO JPEG, so we should probably stick to the standard reader + try { + @SuppressWarnings("unchecked") + Class readerClass = (Class) Class.forName("com.sun.imageio.plugins.jpeg.JPEGImageReader"); + Constructor constructor = readerClass.getConstructor(ImageReaderSpi.class); + return constructor.newInstance(getOriginatingProvider()); + } + catch (ClassNotFoundException | NoSuchMethodException | InvocationTargetException | InstantiationException | IllegalAccessException ignore) { + if (DEBUG) { + ignore.printStackTrace(); + } + // Fall back to default reader below + } + + // If we can't get the standard reader, fall back to the default (first) reader + Iterator readers = ImageIO.getImageReadersByFormatName("JPEG"); + if (!readers.hasNext()) { + throw new IIOException("Could not instantiate JPEGImageReader. "); + } + + return readers.next(); + } + private static InputStream createJFIFStream(WritableRaster raster, int stripTileWidth, int stripTileHeight, byte[][] qTables, byte[][] dcTables, byte[][] acTables) throws IOException { FastByteArrayOutputStream stream = new FastByteArrayOutputStream( 2 + 2 + 2 + 6 + 3 * raster.getNumBands() + @@ -1378,6 +1404,8 @@ public class TIFFImageReader extends ImageReaderBase { // TODO: Thumbnail support public static void main(final String[] args) throws IOException { + ImageIO.setUseCache(false); + for (final String arg : args) { File file = new File(arg); @@ -1459,7 +1487,12 @@ public class TIFFImageReader extends ImageReaderBase { IIOMetadata metadata = reader.getImageMetadata(imageNo); if (metadata != null) { - new XMLSerializer(System.out, "UTF-8").serialize(metadata.getAsTree(metadata.getNativeMetadataFormatName()), false); + if (metadata.getNativeMetadataFormatName() != null) { + new XMLSerializer(System.out, "UTF-8").serialize(metadata.getAsTree(metadata.getNativeMetadataFormatName()), false); + } + else if (metadata.isStandardMetadataFormatSupported()) { + new XMLSerializer(System.out, "UTF-8").serialize(metadata.getAsTree(IIOMetadataFormatImpl.standardMetadataFormatName), false); + } } System.err.println("image: " + image); From 037e0d5473eb6aaa9ba6f23ef4b530ac8e533e5f Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Fri, 10 Apr 2015 11:23:38 +0200 Subject: [PATCH 024/182] Clean up. --- .../imageio/plugins/jpeg/JPEGImageReader.java | 38 ++++++++++++------- 1 file changed, 24 insertions(+), 14 deletions(-) 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 1c2a82c7..04fd210e 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 @@ -112,7 +112,7 @@ public class JPEGImageReader extends ImageReaderBase { private static final Map> SEGMENT_IDENTIFIERS = createSegmentIds(); private static Map> createSegmentIds() { - Map> map = new LinkedHashMap>(); + Map> map = new LinkedHashMap<>(); // Need all APP markers to be able to re-generate proper metadata later for (int appMarker = JPEG.APP0; appMarker <= JPEG.APP15; appMarker++) { @@ -224,7 +224,7 @@ public class JPEGImageReader extends ImageReaderBase { JPEGColorSpace csType = getSourceCSType(getJFIF(), getAdobeDCT(), getSOF()); if (types == null || !types.hasNext() || csType == JPEGColorSpace.CMYK || csType == JPEGColorSpace.YCCK) { - ArrayList typeList = new ArrayList(); + ArrayList typeList = new ArrayList<>(); // Add the standard types, we can always convert to these typeList.add(ImageTypeSpecifiers.createFromBufferedImageType(BufferedImage.TYPE_3BYTE_BGR)); typeList.add(ImageTypeSpecifiers.createFromBufferedImageType(BufferedImage.TYPE_INT_RGB)); @@ -371,6 +371,10 @@ public class JPEGImageReader extends ImageReaderBase { int origHeight = getHeight(imageIndex); Iterator imageTypes = getImageTypes(imageIndex); + // TODO: Avoid creating destination here, if possible (as it saves time and memory) + // If YCbCr or RGB, we could instead create a BufferedImage around the converted raster directly. + // If YCCK or CMYK, we could instead create a BufferedImage around the converted raster, + // leaving the fourth band as alpha (or pretend it's not there, by creating a child raster). BufferedImage image = getDestination(param, imageTypes, origWidth, origHeight); WritableRaster destination = image.getRaster(); @@ -466,6 +470,11 @@ public class JPEGImageReader extends ImageReaderBase { } else if (csType == JPEGColorSpace.YCCK) { YCbCrConverter.convertYCCK2CMYK(raster); + // flag0 bit 15, blend = 1 see http://graphicdesign.stackexchange.com/questions/12894/cmyk-jpegs-extracted-from-pdf-appear-inverted + if ((getAdobeDCT().flags0 & 0x8000) != 0) { + /// TODO: Better yet would be to not inverting in the first place, add flag to convertYCCK2CMYK + invertCMYK(raster); + } } else if (csType == JPEGColorSpace.CMYK) { invertCMYK(raster); @@ -670,16 +679,11 @@ public class JPEGImageReader extends ImageReaderBase { segments = JPEGSegmentUtil.readSegments(imageInput, SEGMENT_IDENTIFIERS); } - catch (IIOException ignore) { + catch (IIOException | IllegalArgumentException ignore) { if (DEBUG) { ignore.printStackTrace(); } } - catch (IllegalArgumentException foo) { - if (DEBUG) { - foo.printStackTrace(); - } - } finally { imageInput.reset(); } @@ -699,7 +703,7 @@ public class JPEGImageReader extends ImageReaderBase { if ((marker == ALL_APP_MARKERS && segment.marker() >= JPEG.APP0 && segment.marker() <= JPEG.APP15 || segment.marker() == marker) && (identifier == null || identifier.equals(segment.identifier()))) { if (appSegments == Collections.EMPTY_LIST) { - appSegments = new ArrayList(segments.size()); + appSegments = new ArrayList<>(segments.size()); } appSegments.add(segment); @@ -949,7 +953,7 @@ public class JPEGImageReader extends ImageReaderBase { checkBounds(imageIndex); if (thumbnails == null) { - thumbnails = new ArrayList(); + thumbnails = new ArrayList<>(); ThumbnailReadProgressListener thumbnailProgressDelegator = new ThumbnailProgressDelegate(); // Read JFIF thumbnails if present @@ -1408,10 +1412,16 @@ public class JPEGImageReader extends ImageReaderBase { try { IIOMetadata imageMetadata = reader.getImageMetadata(0); System.out.println("Metadata for File: " + file.getName()); - System.out.println("Native:"); - new XMLSerializer(System.out, System.getProperty("file.encoding")).serialize(imageMetadata.getAsTree(imageMetadata.getNativeMetadataFormatName()), false); - System.out.println("Standard:"); - new XMLSerializer(System.out, System.getProperty("file.encoding")).serialize(imageMetadata.getAsTree(IIOMetadataFormatImpl.standardMetadataFormatName), false); + + if (imageMetadata.getNativeMetadataFormatName() != null) { + System.out.println("Native:"); + new XMLSerializer(System.out, System.getProperty("file.encoding")).serialize(imageMetadata.getAsTree(imageMetadata.getNativeMetadataFormatName()), false); + } + if (imageMetadata.isStandardMetadataFormatSupported()) { + System.out.println("Standard:"); + new XMLSerializer(System.out, System.getProperty("file.encoding")).serialize(imageMetadata.getAsTree(IIOMetadataFormatImpl.standardMetadataFormatName), false); + } + System.out.println(); int numThumbnails = reader.getNumThumbnails(0); From 791be3d0cc7f536d4ec37810d6cb5314bbc2bcbb Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Fri, 10 Apr 2015 11:24:46 +0200 Subject: [PATCH 025/182] TMI-26: TIFF write support clean up. --- .../imageio/plugins/tiff/TIFFImageWriter.java | 24 +++++++++---------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageWriter.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageWriter.java index 9f672cfb..119404b2 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageWriter.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageWriter.java @@ -65,22 +65,18 @@ import java.util.zip.DeflaterOutputStream; * @version $Id: TIFFImageWriter.java,v 1.0 18.09.13 12:46 haraldk Exp$ */ public final class TIFFImageWriter extends ImageWriterBase { - // Short term - // TODO: Support JPEG compression (7) - might need extra input to allow multiple images with single DQT - // TODO: Use sensible defaults for compression based on input? None is sensible... :-) - // Long term // TODO: Support tiling // TODO: Support thumbnails // TODO: Support ImageIO metadata // TODO: Support CCITT Modified Huffman compression (2) - // TODO: Full "Baseline TIFF" support - // TODO: Support LZW compression (5)? + // TODO: Full "Baseline TIFF" support (pending CCITT compression 2) + // TODO: CCITT compressions T.4 and T.6 // ---- // TODO: Support storing multiple images in one stream (multi-page TIFF) // TODO: Support use-case: Transcode multi-layer PSD to multi-page TIFF with metadata // TODO: Support use-case: Transcode multi-page TIFF to multiple single-page TIFFs with metadata - // TODO: Support use-case: Losslessly transcode JPEG to JPEG in TIFF with (EXIF) metadata (and back) + // TODO: Support use-case: Losslessly transcode JPEG to JPEG-in-TIFF with (EXIF) metadata (and back) // Very long term... // TODO: Support JBIG compression via ImageIO plugin/delegate? Pending support in Reader @@ -92,6 +88,9 @@ public final class TIFFImageWriter extends ImageWriterBase { // Support predictor. See TIFF 6.0 Specification, Section 14: "Differencing Predictor", page 64. // Support PackBits compression (32773) - easy - BASELINE // Support ZLIB (/Deflate) compression (8) - easy + // Support LZW compression (5) + // Support JPEG compression (7) - might need extra input to allow multiple images with single DQT + // Use sensible defaults for compression based on input? None is sensible... :-) public static final Rational STANDARD_DPI = new Rational(72); @@ -127,12 +126,10 @@ public final class TIFFImageWriter extends ImageWriterBase { int[] bitOffsets; if (sampleModel instanceof ComponentSampleModel) { bandOffsets = ((ComponentSampleModel) sampleModel).getBandOffsets(); -// System.err.println("bandOffsets: " + Arrays.toString(bandOffsets)); bitOffsets = null; } else if (sampleModel instanceof SinglePixelPackedSampleModel) { bitOffsets = ((SinglePixelPackedSampleModel) sampleModel).getBitOffsets(); -// System.err.println("bitOffsets: " + Arrays.toString(bitOffsets)); bandOffsets = null; } else if (sampleModel instanceof MultiPixelPackedSampleModel) { @@ -143,10 +140,10 @@ public final class TIFFImageWriter extends ImageWriterBase { throw new IllegalArgumentException("Unknown bit/bandOffsets for sample model: " + sampleModel); } - List entries = new ArrayList(); + List entries = new ArrayList<>(); entries.add(new TIFFEntry(TIFF.TAG_IMAGE_WIDTH, renderedImage.getWidth())); entries.add(new TIFFEntry(TIFF.TAG_IMAGE_HEIGHT, renderedImage.getHeight())); -// entries.add(new TIFFEntry(TIFF.TAG_ORIENTATION, 1)); // (optional) + // entries.add(new TIFFEntry(TIFF.TAG_ORIENTATION, 1)); // (optional) entries.add(new TIFFEntry(TIFF.TAG_BITS_PER_SAMPLE, asShortArray(sampleModel.getSampleSize()))); // If numComponents > 3, write ExtraSamples if (numComponents > 3) { @@ -162,7 +159,8 @@ public final class TIFFImageWriter extends ImageWriterBase { // Write compression field from param or metadata int compression = TIFFImageWriteParam.getCompressionType(param); entries.add(new TIFFEntry(TIFF.TAG_COMPRESSION, compression)); - // TODO: Let param control predictor + + // TODO: Let param/metadata control predictor switch (compression) { case TIFFExtension.COMPRESSION_ZLIB: case TIFFExtension.COMPRESSION_DEFLATE: @@ -253,7 +251,7 @@ public final class TIFFImageWriter extends ImageWriterBase { writeImageData(createCompressorStream(renderedImage, param), renderedImage, numComponents, bandOffsets, bitOffsets); } - // TODO: Update IFD0-pointer, and write IFD + // Update IFD0-pointer, and write IFD if (compression != TIFFBaseline.COMPRESSION_NONE) { long streamPosition = imageOutput.getStreamPosition(); From d9970968189c27a63eabbabea99bd0349f2196f9 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Fri, 10 Apr 2015 11:36:59 +0200 Subject: [PATCH 026/182] Clean up. --- .../imageio/plugins/bmp/BMPImageReaderTest.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/imageio/imageio-bmp/src/test/java/com/twelvemonkeys/imageio/plugins/bmp/BMPImageReaderTest.java b/imageio/imageio-bmp/src/test/java/com/twelvemonkeys/imageio/plugins/bmp/BMPImageReaderTest.java index fcdce530..c426d7ee 100755 --- a/imageio/imageio-bmp/src/test/java/com/twelvemonkeys/imageio/plugins/bmp/BMPImageReaderTest.java +++ b/imageio/imageio-bmp/src/test/java/com/twelvemonkeys/imageio/plugins/bmp/BMPImageReaderTest.java @@ -24,6 +24,7 @@ import java.util.Iterator; import java.util.List; import static org.junit.Assert.*; +import static org.junit.Assume.assumeNoException; import static org.mockito.Matchers.anyInt; import static org.mockito.Matchers.eq; import static org.mockito.Mockito.*; @@ -235,7 +236,6 @@ public class BMPImageReaderTest extends ImageReaderAbstractTest @Test public void testMetadataEqualsJRE() throws IOException, URISyntaxException { - // Ignore this test if not on an Oracle JRE (com.sun...BMPImageReader not available) ImageReader jreReader; try { @SuppressWarnings("unchecked") @@ -244,8 +244,9 @@ public class BMPImageReaderTest extends ImageReaderAbstractTest jreReader = constructor.newInstance(new Object[] {null}); } catch (Exception e) { - System.err.println("WARNING: Skipping metadata tests: " + e); e.printStackTrace(); + // Ignore this test if not on an Oracle JRE (com.sun...BMPImageReader not available) + assumeNoException(e); return; } From 2af5662527733008cdfe934cf536882539074252 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Fri, 10 Apr 2015 11:37:45 +0200 Subject: [PATCH 027/182] Now skips creation of empty JARs (less warnings in output). --- pom.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/pom.xml b/pom.xml index 1b8a19e9..53bfcbbb 100755 --- a/pom.xml +++ b/pom.xml @@ -62,6 +62,7 @@ org.apache.maven.plugins maven-jar-plugin + true twelvemonkeys-${project.artifactId} From 686275fde90146e6638542b0015a522852b8da1d Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Fri, 10 Apr 2015 12:11:27 +0200 Subject: [PATCH 028/182] Disabled the skip-if-empty, as it didn't work out using the gpg-plugin for signing... *sigh* --- pom.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/pom.xml b/pom.xml index 53bfcbbb..1b8a19e9 100755 --- a/pom.xml +++ b/pom.xml @@ -62,7 +62,6 @@ org.apache.maven.plugins maven-jar-plugin - true twelvemonkeys-${project.artifactId} From 2f249a38856fb40f9efa9609fad202c778fda7bb Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Fri, 10 Apr 2015 12:16:08 +0200 Subject: [PATCH 029/182] [maven-release-plugin] prepare release twelvemonkeys-3.1.0 --- bom/pom.xml | 2 +- common/common-image/pom.xml | 2 +- common/common-io/pom.xml | 2 +- common/common-lang/pom.xml | 2 +- common/pom.xml | 2 +- imageio/imageio-batik/pom.xml | 2 +- imageio/imageio-bmp/pom.xml | 2 +- imageio/imageio-clippath/pom.xml | 6 ++---- imageio/imageio-core/pom.xml | 2 +- imageio/imageio-icns/pom.xml | 2 +- imageio/imageio-iff/pom.xml | 2 +- imageio/imageio-jpeg/pom.xml | 2 +- imageio/imageio-metadata/pom.xml | 2 +- imageio/imageio-pcx/pom.xml | 6 ++---- imageio/imageio-pdf/pom.xml | 2 +- imageio/imageio-pict/pom.xml | 2 +- imageio/imageio-pnm/pom.xml | 6 ++---- imageio/imageio-psd/pom.xml | 2 +- imageio/imageio-reference/pom.xml | 2 +- imageio/imageio-sgi/pom.xml | 6 ++---- imageio/imageio-tga/pom.xml | 6 ++---- imageio/imageio-thumbsdb/pom.xml | 2 +- imageio/imageio-tiff/pom.xml | 2 +- imageio/pom.xml | 2 +- pom.xml | 4 ++-- servlet/pom.xml | 2 +- 26 files changed, 32 insertions(+), 42 deletions(-) diff --git a/bom/pom.xml b/bom/pom.xml index 1b84ed5b..e2d2874f 100644 --- a/bom/pom.xml +++ b/bom/pom.xml @@ -5,7 +5,7 @@ com.twelvemonkeys twelvemonkeys - 3.1-SNAPSHOT + 3.1.0 com.twelvemonkeys.bom diff --git a/common/common-image/pom.xml b/common/common-image/pom.xml index f4cd382f..eb6a8d3c 100644 --- a/common/common-image/pom.xml +++ b/common/common-image/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.common common - 3.1-SNAPSHOT + 3.1.0 common-image jar diff --git a/common/common-io/pom.xml b/common/common-io/pom.xml index 2d59a1c9..e958ca41 100644 --- a/common/common-io/pom.xml +++ b/common/common-io/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.common common - 3.1-SNAPSHOT + 3.1.0 common-io jar diff --git a/common/common-lang/pom.xml b/common/common-lang/pom.xml index 57789000..abf9c4fb 100644 --- a/common/common-lang/pom.xml +++ b/common/common-lang/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.common common - 3.1-SNAPSHOT + 3.1.0 common-lang jar diff --git a/common/pom.xml b/common/pom.xml index cd536b41..a1650b94 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys twelvemonkeys - 3.1-SNAPSHOT + 3.1.0 com.twelvemonkeys.common common diff --git a/imageio/imageio-batik/pom.xml b/imageio/imageio-batik/pom.xml index 0b773fe3..6ad90ed6 100644 --- a/imageio/imageio-batik/pom.xml +++ b/imageio/imageio-batik/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.1-SNAPSHOT + 3.1.0 imageio-batik TwelveMonkeys :: ImageIO :: Batik Plugin diff --git a/imageio/imageio-bmp/pom.xml b/imageio/imageio-bmp/pom.xml index 50234fdf..82a0c2b2 100644 --- a/imageio/imageio-bmp/pom.xml +++ b/imageio/imageio-bmp/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.1-SNAPSHOT + 3.1.0 imageio-bmp TwelveMonkeys :: ImageIO :: BMP plugin diff --git a/imageio/imageio-clippath/pom.xml b/imageio/imageio-clippath/pom.xml index d7ab389c..2e54cbaf 100755 --- a/imageio/imageio-clippath/pom.xml +++ b/imageio/imageio-clippath/pom.xml @@ -1,12 +1,10 @@ - + 4.0.0 com.twelvemonkeys.imageio imageio - 3.1-SNAPSHOT + 3.1.0 imageio-clippath TwelveMonkeys :: ImageIO :: Photoshop Path Support diff --git a/imageio/imageio-core/pom.xml b/imageio/imageio-core/pom.xml index 6d78c59d..b72a6e4a 100644 --- a/imageio/imageio-core/pom.xml +++ b/imageio/imageio-core/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.1-SNAPSHOT + 3.1.0 imageio-core TwelveMonkeys :: ImageIO :: Core diff --git a/imageio/imageio-icns/pom.xml b/imageio/imageio-icns/pom.xml index 3389a889..a5911f38 100644 --- a/imageio/imageio-icns/pom.xml +++ b/imageio/imageio-icns/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.1-SNAPSHOT + 3.1.0 imageio-icns TwelveMonkeys :: ImageIO :: ICNS plugin diff --git a/imageio/imageio-iff/pom.xml b/imageio/imageio-iff/pom.xml index 5bf6aeb5..bfeb15c7 100644 --- a/imageio/imageio-iff/pom.xml +++ b/imageio/imageio-iff/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.1-SNAPSHOT + 3.1.0 imageio-iff TwelveMonkeys :: ImageIO :: IFF plugin diff --git a/imageio/imageio-jpeg/pom.xml b/imageio/imageio-jpeg/pom.xml index 90e89fa1..80311927 100644 --- a/imageio/imageio-jpeg/pom.xml +++ b/imageio/imageio-jpeg/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.1-SNAPSHOT + 3.1.0 imageio-jpeg TwelveMonkeys :: ImageIO :: JPEG plugin diff --git a/imageio/imageio-metadata/pom.xml b/imageio/imageio-metadata/pom.xml index 77b62d9f..5a770a97 100644 --- a/imageio/imageio-metadata/pom.xml +++ b/imageio/imageio-metadata/pom.xml @@ -3,7 +3,7 @@ com.twelvemonkeys.imageio imageio - 3.1-SNAPSHOT + 3.1.0 4.0.0 imageio-metadata diff --git a/imageio/imageio-pcx/pom.xml b/imageio/imageio-pcx/pom.xml index 511724a1..5a919d7d 100755 --- a/imageio/imageio-pcx/pom.xml +++ b/imageio/imageio-pcx/pom.xml @@ -1,12 +1,10 @@ - + 4.0.0 com.twelvemonkeys.imageio imageio - 3.1-SNAPSHOT + 3.1.0 imageio-pcx TwelveMonkeys :: ImageIO :: PCX plugin diff --git a/imageio/imageio-pdf/pom.xml b/imageio/imageio-pdf/pom.xml index 8d0628f9..92214706 100644 --- a/imageio/imageio-pdf/pom.xml +++ b/imageio/imageio-pdf/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.1-SNAPSHOT + 3.1.0 imageio-pdf TwelveMonkeys :: ImageIO :: PDF plugin diff --git a/imageio/imageio-pict/pom.xml b/imageio/imageio-pict/pom.xml index 43f2abbd..3f1fd459 100644 --- a/imageio/imageio-pict/pom.xml +++ b/imageio/imageio-pict/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.1-SNAPSHOT + 3.1.0 imageio-pict TwelveMonkeys :: ImageIO :: PICT plugin diff --git a/imageio/imageio-pnm/pom.xml b/imageio/imageio-pnm/pom.xml index 2d808f38..72a6d61f 100755 --- a/imageio/imageio-pnm/pom.xml +++ b/imageio/imageio-pnm/pom.xml @@ -1,12 +1,10 @@ - + 4.0.0 com.twelvemonkeys.imageio imageio - 3.1-SNAPSHOT + 3.1.0 imageio-pnm TwelveMonkeys :: ImageIO :: PNM plugin diff --git a/imageio/imageio-psd/pom.xml b/imageio/imageio-psd/pom.xml index c02f7e83..d3bf1e85 100644 --- a/imageio/imageio-psd/pom.xml +++ b/imageio/imageio-psd/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.1-SNAPSHOT + 3.1.0 imageio-psd TwelveMonkeys :: ImageIO :: PSD plugin diff --git a/imageio/imageio-reference/pom.xml b/imageio/imageio-reference/pom.xml index c636b8ed..23d33d8f 100644 --- a/imageio/imageio-reference/pom.xml +++ b/imageio/imageio-reference/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.1-SNAPSHOT + 3.1.0 imageio-reference TwelveMonkeys :: ImageIO :: reference test cases diff --git a/imageio/imageio-sgi/pom.xml b/imageio/imageio-sgi/pom.xml index 6dee4429..59cf85ff 100755 --- a/imageio/imageio-sgi/pom.xml +++ b/imageio/imageio-sgi/pom.xml @@ -1,12 +1,10 @@ - + 4.0.0 com.twelvemonkeys.imageio imageio - 3.1-SNAPSHOT + 3.1.0 imageio-sgi TwelveMonkeys :: ImageIO :: SGI plugin diff --git a/imageio/imageio-tga/pom.xml b/imageio/imageio-tga/pom.xml index fe5f36eb..5ef4e5b3 100755 --- a/imageio/imageio-tga/pom.xml +++ b/imageio/imageio-tga/pom.xml @@ -1,12 +1,10 @@ - + 4.0.0 com.twelvemonkeys.imageio imageio - 3.1-SNAPSHOT + 3.1.0 imageio-tga TwelveMonkeys :: ImageIO :: TGA plugin diff --git a/imageio/imageio-thumbsdb/pom.xml b/imageio/imageio-thumbsdb/pom.xml index 1e674aaf..3f8fecf4 100644 --- a/imageio/imageio-thumbsdb/pom.xml +++ b/imageio/imageio-thumbsdb/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.1-SNAPSHOT + 3.1.0 imageio-thumbsdb TwelveMonkeys :: ImageIO :: Thumbs.db plugin diff --git a/imageio/imageio-tiff/pom.xml b/imageio/imageio-tiff/pom.xml index 7f8f118f..fe237b48 100644 --- a/imageio/imageio-tiff/pom.xml +++ b/imageio/imageio-tiff/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.1-SNAPSHOT + 3.1.0 imageio-tiff TwelveMonkeys :: ImageIO :: TIFF plugin diff --git a/imageio/pom.xml b/imageio/pom.xml index c25c074a..843121e6 100644 --- a/imageio/pom.xml +++ b/imageio/pom.xml @@ -3,7 +3,7 @@ com.twelvemonkeys twelvemonkeys - 3.1-SNAPSHOT + 3.1.0 4.0.0 com.twelvemonkeys.imageio diff --git a/pom.xml b/pom.xml index 1b8a19e9..897ff300 100755 --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@ com.twelvemonkeys twelvemonkeys - 3.1-SNAPSHOT + 3.1.0 pom Twelvemonkeys @@ -48,7 +48,7 @@ scm:git:https://github.com/haraldk/TwelveMonkeys scm:git:https://github.com/haraldk/TwelveMonkeys https://github.com/haraldk/TwelveMonkeys - HEAD + twelvemonkeys-3.1.0 diff --git a/servlet/pom.xml b/servlet/pom.xml index c44ea86e..1d9df69f 100644 --- a/servlet/pom.xml +++ b/servlet/pom.xml @@ -3,7 +3,7 @@ com.twelvemonkeys twelvemonkeys - 3.1-SNAPSHOT + 3.1.0 4.0.0 From 475fdec33fa628c4f3b311580994880590c7d425 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Fri, 10 Apr 2015 12:16:14 +0200 Subject: [PATCH 030/182] [maven-release-plugin] prepare for next development iteration --- bom/pom.xml | 2 +- common/common-image/pom.xml | 2 +- common/common-io/pom.xml | 2 +- common/common-lang/pom.xml | 2 +- common/pom.xml | 2 +- imageio/imageio-batik/pom.xml | 2 +- imageio/imageio-bmp/pom.xml | 2 +- imageio/imageio-clippath/pom.xml | 2 +- imageio/imageio-core/pom.xml | 2 +- imageio/imageio-icns/pom.xml | 2 +- imageio/imageio-iff/pom.xml | 2 +- imageio/imageio-jpeg/pom.xml | 2 +- imageio/imageio-metadata/pom.xml | 2 +- imageio/imageio-pcx/pom.xml | 2 +- imageio/imageio-pdf/pom.xml | 2 +- imageio/imageio-pict/pom.xml | 2 +- imageio/imageio-pnm/pom.xml | 2 +- imageio/imageio-psd/pom.xml | 2 +- imageio/imageio-reference/pom.xml | 2 +- imageio/imageio-sgi/pom.xml | 2 +- imageio/imageio-tga/pom.xml | 2 +- imageio/imageio-thumbsdb/pom.xml | 2 +- imageio/imageio-tiff/pom.xml | 2 +- imageio/pom.xml | 2 +- pom.xml | 4 ++-- servlet/pom.xml | 2 +- 26 files changed, 27 insertions(+), 27 deletions(-) diff --git a/bom/pom.xml b/bom/pom.xml index e2d2874f..5903934e 100644 --- a/bom/pom.xml +++ b/bom/pom.xml @@ -5,7 +5,7 @@ com.twelvemonkeys twelvemonkeys - 3.1.0 + 3.1.1-SNAPSHOT com.twelvemonkeys.bom diff --git a/common/common-image/pom.xml b/common/common-image/pom.xml index eb6a8d3c..b482e576 100644 --- a/common/common-image/pom.xml +++ b/common/common-image/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.common common - 3.1.0 + 3.1.1-SNAPSHOT common-image jar diff --git a/common/common-io/pom.xml b/common/common-io/pom.xml index e958ca41..e86be1ca 100644 --- a/common/common-io/pom.xml +++ b/common/common-io/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.common common - 3.1.0 + 3.1.1-SNAPSHOT common-io jar diff --git a/common/common-lang/pom.xml b/common/common-lang/pom.xml index abf9c4fb..8429ba3f 100644 --- a/common/common-lang/pom.xml +++ b/common/common-lang/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.common common - 3.1.0 + 3.1.1-SNAPSHOT common-lang jar diff --git a/common/pom.xml b/common/pom.xml index a1650b94..eaf785b2 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys twelvemonkeys - 3.1.0 + 3.1.1-SNAPSHOT com.twelvemonkeys.common common diff --git a/imageio/imageio-batik/pom.xml b/imageio/imageio-batik/pom.xml index 6ad90ed6..8bb9be37 100644 --- a/imageio/imageio-batik/pom.xml +++ b/imageio/imageio-batik/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.1.0 + 3.1.1-SNAPSHOT imageio-batik TwelveMonkeys :: ImageIO :: Batik Plugin diff --git a/imageio/imageio-bmp/pom.xml b/imageio/imageio-bmp/pom.xml index 82a0c2b2..9f9eb1a5 100644 --- a/imageio/imageio-bmp/pom.xml +++ b/imageio/imageio-bmp/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.1.0 + 3.1.1-SNAPSHOT imageio-bmp TwelveMonkeys :: ImageIO :: BMP plugin diff --git a/imageio/imageio-clippath/pom.xml b/imageio/imageio-clippath/pom.xml index 2e54cbaf..4a8caac7 100755 --- a/imageio/imageio-clippath/pom.xml +++ b/imageio/imageio-clippath/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.1.0 + 3.1.1-SNAPSHOT imageio-clippath TwelveMonkeys :: ImageIO :: Photoshop Path Support diff --git a/imageio/imageio-core/pom.xml b/imageio/imageio-core/pom.xml index b72a6e4a..ebb2cd28 100644 --- a/imageio/imageio-core/pom.xml +++ b/imageio/imageio-core/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.1.0 + 3.1.1-SNAPSHOT imageio-core TwelveMonkeys :: ImageIO :: Core diff --git a/imageio/imageio-icns/pom.xml b/imageio/imageio-icns/pom.xml index a5911f38..bdfb7cab 100644 --- a/imageio/imageio-icns/pom.xml +++ b/imageio/imageio-icns/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.1.0 + 3.1.1-SNAPSHOT imageio-icns TwelveMonkeys :: ImageIO :: ICNS plugin diff --git a/imageio/imageio-iff/pom.xml b/imageio/imageio-iff/pom.xml index bfeb15c7..26bd06ed 100644 --- a/imageio/imageio-iff/pom.xml +++ b/imageio/imageio-iff/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.1.0 + 3.1.1-SNAPSHOT imageio-iff TwelveMonkeys :: ImageIO :: IFF plugin diff --git a/imageio/imageio-jpeg/pom.xml b/imageio/imageio-jpeg/pom.xml index 80311927..d57ae24f 100644 --- a/imageio/imageio-jpeg/pom.xml +++ b/imageio/imageio-jpeg/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.1.0 + 3.1.1-SNAPSHOT imageio-jpeg TwelveMonkeys :: ImageIO :: JPEG plugin diff --git a/imageio/imageio-metadata/pom.xml b/imageio/imageio-metadata/pom.xml index 5a770a97..5059e1d3 100644 --- a/imageio/imageio-metadata/pom.xml +++ b/imageio/imageio-metadata/pom.xml @@ -3,7 +3,7 @@ com.twelvemonkeys.imageio imageio - 3.1.0 + 3.1.1-SNAPSHOT 4.0.0 imageio-metadata diff --git a/imageio/imageio-pcx/pom.xml b/imageio/imageio-pcx/pom.xml index 5a919d7d..b407826e 100755 --- a/imageio/imageio-pcx/pom.xml +++ b/imageio/imageio-pcx/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.1.0 + 3.1.1-SNAPSHOT imageio-pcx TwelveMonkeys :: ImageIO :: PCX plugin diff --git a/imageio/imageio-pdf/pom.xml b/imageio/imageio-pdf/pom.xml index 92214706..52341267 100644 --- a/imageio/imageio-pdf/pom.xml +++ b/imageio/imageio-pdf/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.1.0 + 3.1.1-SNAPSHOT imageio-pdf TwelveMonkeys :: ImageIO :: PDF plugin diff --git a/imageio/imageio-pict/pom.xml b/imageio/imageio-pict/pom.xml index 3f1fd459..22d0e530 100644 --- a/imageio/imageio-pict/pom.xml +++ b/imageio/imageio-pict/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.1.0 + 3.1.1-SNAPSHOT imageio-pict TwelveMonkeys :: ImageIO :: PICT plugin diff --git a/imageio/imageio-pnm/pom.xml b/imageio/imageio-pnm/pom.xml index 72a6d61f..ec28b21d 100755 --- a/imageio/imageio-pnm/pom.xml +++ b/imageio/imageio-pnm/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.1.0 + 3.1.1-SNAPSHOT imageio-pnm TwelveMonkeys :: ImageIO :: PNM plugin diff --git a/imageio/imageio-psd/pom.xml b/imageio/imageio-psd/pom.xml index d3bf1e85..5e02f8b2 100644 --- a/imageio/imageio-psd/pom.xml +++ b/imageio/imageio-psd/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.1.0 + 3.1.1-SNAPSHOT imageio-psd TwelveMonkeys :: ImageIO :: PSD plugin diff --git a/imageio/imageio-reference/pom.xml b/imageio/imageio-reference/pom.xml index 23d33d8f..8f6d6e3c 100644 --- a/imageio/imageio-reference/pom.xml +++ b/imageio/imageio-reference/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.1.0 + 3.1.1-SNAPSHOT imageio-reference TwelveMonkeys :: ImageIO :: reference test cases diff --git a/imageio/imageio-sgi/pom.xml b/imageio/imageio-sgi/pom.xml index 59cf85ff..aad333c9 100755 --- a/imageio/imageio-sgi/pom.xml +++ b/imageio/imageio-sgi/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.1.0 + 3.1.1-SNAPSHOT imageio-sgi TwelveMonkeys :: ImageIO :: SGI plugin diff --git a/imageio/imageio-tga/pom.xml b/imageio/imageio-tga/pom.xml index 5ef4e5b3..7c65d55c 100755 --- a/imageio/imageio-tga/pom.xml +++ b/imageio/imageio-tga/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.1.0 + 3.1.1-SNAPSHOT imageio-tga TwelveMonkeys :: ImageIO :: TGA plugin diff --git a/imageio/imageio-thumbsdb/pom.xml b/imageio/imageio-thumbsdb/pom.xml index 3f8fecf4..e82f0340 100644 --- a/imageio/imageio-thumbsdb/pom.xml +++ b/imageio/imageio-thumbsdb/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.1.0 + 3.1.1-SNAPSHOT imageio-thumbsdb TwelveMonkeys :: ImageIO :: Thumbs.db plugin diff --git a/imageio/imageio-tiff/pom.xml b/imageio/imageio-tiff/pom.xml index fe237b48..23c18fb1 100644 --- a/imageio/imageio-tiff/pom.xml +++ b/imageio/imageio-tiff/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.1.0 + 3.1.1-SNAPSHOT imageio-tiff TwelveMonkeys :: ImageIO :: TIFF plugin diff --git a/imageio/pom.xml b/imageio/pom.xml index 843121e6..5c58847c 100644 --- a/imageio/pom.xml +++ b/imageio/pom.xml @@ -3,7 +3,7 @@ com.twelvemonkeys twelvemonkeys - 3.1.0 + 3.1.1-SNAPSHOT 4.0.0 com.twelvemonkeys.imageio diff --git a/pom.xml b/pom.xml index 897ff300..4cb4942e 100755 --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@ com.twelvemonkeys twelvemonkeys - 3.1.0 + 3.1.1-SNAPSHOT pom Twelvemonkeys @@ -48,7 +48,7 @@ scm:git:https://github.com/haraldk/TwelveMonkeys scm:git:https://github.com/haraldk/TwelveMonkeys https://github.com/haraldk/TwelveMonkeys - twelvemonkeys-3.1.0 + HEAD diff --git a/servlet/pom.xml b/servlet/pom.xml index 1d9df69f..eafc3e26 100644 --- a/servlet/pom.xml +++ b/servlet/pom.xml @@ -3,7 +3,7 @@ com.twelvemonkeys twelvemonkeys - 3.1.0 + 3.1.1-SNAPSHOT 4.0.0 From 4dbe10846f8b1369e82cf2a6ac748114a2f538a8 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Fri, 10 Apr 2015 13:06:59 +0200 Subject: [PATCH 031/182] Updated links and versions. --- README.md | 51 +++++++++++++++++++++++++-------------------------- 1 file changed, 25 insertions(+), 26 deletions(-) diff --git a/README.md b/README.md index 27cbca12..ff7ce3cf 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ ## Latest -TwelveMonkeys ImageIO 3.0.2 is released. +TwelveMonkeys ImageIO 3.1.0 is released (Apr. 10th, 2015). ## About @@ -459,12 +459,12 @@ To depend on the JPEG and TIFF plugin using Maven, add the following to your POM com.twelvemonkeys.imageio imageio-jpeg - 3.0.2 + 3.1.1 com.twelvemonkeys.imageio imageio-tiff - 3.0.2 + 3.1.1 @@ -472,41 +472,40 @@ To depend on the JPEG and TIFF plugin using Maven, add the following to your POM To depend on the JPEG and TIFF plugin in your IDE or program, add all of the following JARs to your class path: - twelvemonkeys-common-lang-3.0.2.jar - twelvemonkeys-common-io-3.0.2.jar - twelvemonkeys-common-image-3.0.2.jar - twelvemonkeys-imageio-core-3.0.2.jar - twelvemonkeys-imageio-metadata-3.0.2.jar - twelvemonkeys-imageio-jpeg-3.0.2.jar - twelvemonkeys-imageio-tiff-3.0.2.jar + twelvemonkeys-common-lang-3.1.1.jar + twelvemonkeys-common-io-3.1.1.jar + twelvemonkeys-common-image-3.1.1.jar + twelvemonkeys-imageio-core-3.1.1.jar + twelvemonkeys-imageio-metadata-3.1.1.jar + twelvemonkeys-imageio-jpeg-3.1.1.jar + twelvemonkeys-imageio-tiff-3.1.1.jar ### Links to prebuilt binaries Common dependencies -* [common-lang-3.0.2.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/common/common-lang/3.0.2/common-lang-3.0.2.jar) -* [common-io-3.0.2.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/common/common-io/3.0.2/common-io-3.0.2.jar) -* [common-image-3.0.2.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/common/common-image/3.0.2/common-image-3.0.2.jar) +* [common-lang-3.1.1.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/common/common-lang/3.1.1/common-lang-3.1.1.jar) +* [common-io-3.1.1.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/common/common-io/3.1.1/common-io-3.1.1.jar) +* [common-image-3.1.1.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/common/common-image/3.1.1/common-image-3.1.1.jar) ImageIO dependencies -* [imageio-core-3.0.2.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-core/3.0.2/imageio-core-3.0.2.jar) -* [imageio-metadata-3.0.2.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-metadata/3.0.2/imageio-metadata-3.0.2.jar) +* [imageio-core-3.1.1.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-core/3.1.1/imageio-core-3.1.1.jar) +* [imageio-metadata-3.1.1.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-metadata/3.1.1/imageio-metadata-3.1.1.jar) ImageIO plugins -* [imageio-jpeg-3.0.2.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-jpeg/3.0.2/imageio-jpeg-3.0.2.jar) -* [imageio-tiff-3.0.2.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-tiff/3.0.2/imageio-tiff-3.0.2.jar) -* [imageio-psd-3.0.2.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-psd/3.0.2/imageio-psd-3.0.2.jar) -* [imageio-pict-3.0.2.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-pict/3.0.2/imageio-pict-3.0.2.jar) -* [imageio-iff-3.0.2.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-iff/3.0.2/imageio-iff-3.0.2.jar) -* [imageio-icns-3.0.2.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-icns/3.0.2/imageio-icns-3.0.2.jar) -* [imageio-ico-3.0.2.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-ico/3.0.2/imageio-ico-3.0.2.jar) -* [imageio-thumbsdb-3.0.2.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-thumbsdb/3.0.2/imageio-thumbsdb-3.0.2.jar) +* [imageio-jpeg-3.1.1.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-jpeg/3.1.1/imageio-jpeg-3.1.1.jar) +* [imageio-tiff-3.1.1.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-tiff/3.1.1/imageio-tiff-3.1.1.jar) +* [imageio-psd-3.1.1.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-psd/3.1.1/imageio-psd-3.1.1.jar) +* [imageio-pict-3.1.1.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-pict/3.1.1/imageio-pict-3.1.1.jar) +* [imageio-iff-3.1.1.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-iff/3.1.1/imageio-iff-3.1.1.jar) +* [imageio-icns-3.1.1.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-icns/3.1.1/imageio-icns-3.1.1.jar) +* [imageio-ico-3.1.1.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-ico/3.1.1/imageio-ico-3.1.1.jar) +* [imageio-thumbsdb-3.1.1.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-thumbsdb/3.1.1/imageio-thumbsdb-3.1.1.jar) ImageIO plugins requiring 3rd party libs -* [imageio-batik-3.0.2.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-batik/3.0.2/imageio-batik-3.0.2.jar) -* [imageio-jmagick-3.0.2.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-jmagick/3.0.2/imageio-jmagick-3.0.2.jar) +* [imageio-batik-3.1.1.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-batik/3.1.1/imageio-batik-3.1.1.jar) Servlet support -* [servlet-3.0.2.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/servlet/servlet/3.0.2/servlet-3.0.2.jar) +* [servlet-3.1.1.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/servlet/servlet/3.1.1/servlet-3.1.1.jar) ## License From 7d0e02fce840e771010cf4d245a94d36559504de Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Fri, 10 Apr 2015 13:20:59 +0200 Subject: [PATCH 032/182] Updated links and versions (now with correct versions...). --- README.md | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/README.md b/README.md index ff7ce3cf..6a5d7b4f 100644 --- a/README.md +++ b/README.md @@ -459,12 +459,12 @@ To depend on the JPEG and TIFF plugin using Maven, add the following to your POM com.twelvemonkeys.imageio imageio-jpeg - 3.1.1 + 3.1.0 com.twelvemonkeys.imageio imageio-tiff - 3.1.1 + 3.1.0 @@ -472,40 +472,40 @@ To depend on the JPEG and TIFF plugin using Maven, add the following to your POM To depend on the JPEG and TIFF plugin in your IDE or program, add all of the following JARs to your class path: - twelvemonkeys-common-lang-3.1.1.jar - twelvemonkeys-common-io-3.1.1.jar - twelvemonkeys-common-image-3.1.1.jar - twelvemonkeys-imageio-core-3.1.1.jar - twelvemonkeys-imageio-metadata-3.1.1.jar - twelvemonkeys-imageio-jpeg-3.1.1.jar - twelvemonkeys-imageio-tiff-3.1.1.jar + twelvemonkeys-common-lang-3.1.0.jar + twelvemonkeys-common-io-3.1.0.jar + twelvemonkeys-common-image-3.1.0.jar + twelvemonkeys-imageio-core-3.1.0.jar + twelvemonkeys-imageio-metadata-3.1.0.jar + twelvemonkeys-imageio-jpeg-3.1.0.jar + twelvemonkeys-imageio-tiff-3.1.0.jar ### Links to prebuilt binaries Common dependencies -* [common-lang-3.1.1.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/common/common-lang/3.1.1/common-lang-3.1.1.jar) -* [common-io-3.1.1.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/common/common-io/3.1.1/common-io-3.1.1.jar) -* [common-image-3.1.1.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/common/common-image/3.1.1/common-image-3.1.1.jar) +* [common-lang-3.1.0.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/common/common-lang/3.1.0/common-lang-3.1.0.jar) +* [common-io-3.1.0.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/common/common-io/3.1.0/common-io-3.1.0.jar) +* [common-image-3.1.0.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/common/common-image/3.1.0/common-image-3.1.0.jar) ImageIO dependencies -* [imageio-core-3.1.1.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-core/3.1.1/imageio-core-3.1.1.jar) -* [imageio-metadata-3.1.1.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-metadata/3.1.1/imageio-metadata-3.1.1.jar) +* [imageio-core-3.1.0.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-core/3.1.0/imageio-core-3.1.0.jar) +* [imageio-metadata-3.1.0.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-metadata/3.1.0/imageio-metadata-3.1.0.jar) ImageIO plugins -* [imageio-jpeg-3.1.1.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-jpeg/3.1.1/imageio-jpeg-3.1.1.jar) -* [imageio-tiff-3.1.1.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-tiff/3.1.1/imageio-tiff-3.1.1.jar) -* [imageio-psd-3.1.1.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-psd/3.1.1/imageio-psd-3.1.1.jar) -* [imageio-pict-3.1.1.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-pict/3.1.1/imageio-pict-3.1.1.jar) -* [imageio-iff-3.1.1.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-iff/3.1.1/imageio-iff-3.1.1.jar) -* [imageio-icns-3.1.1.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-icns/3.1.1/imageio-icns-3.1.1.jar) -* [imageio-ico-3.1.1.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-ico/3.1.1/imageio-ico-3.1.1.jar) -* [imageio-thumbsdb-3.1.1.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-thumbsdb/3.1.1/imageio-thumbsdb-3.1.1.jar) +* [imageio-jpeg-3.1.0.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-jpeg/3.1.0/imageio-jpeg-3.1.0.jar) +* [imageio-tiff-3.1.0.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-tiff/3.1.0/imageio-tiff-3.1.0.jar) +* [imageio-psd-3.1.0.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-psd/3.1.0/imageio-psd-3.1.0.jar) +* [imageio-pict-3.1.0.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-pict/3.1.0/imageio-pict-3.1.0.jar) +* [imageio-iff-3.1.0.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-iff/3.1.0/imageio-iff-3.1.0.jar) +* [imageio-icns-3.1.0.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-icns/3.1.0/imageio-icns-3.1.0.jar) +* [imageio-ico-3.1.0.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-ico/3.1.0/imageio-ico-3.1.0.jar) +* [imageio-thumbsdb-3.1.0.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-thumbsdb/3.1.0/imageio-thumbsdb-3.1.0.jar) ImageIO plugins requiring 3rd party libs -* [imageio-batik-3.1.1.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-batik/3.1.1/imageio-batik-3.1.1.jar) +* [imageio-batik-3.1.0.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-batik/3.1.0/imageio-batik-3.1.0.jar) Servlet support -* [servlet-3.1.1.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/servlet/servlet/3.1.1/servlet-3.1.1.jar) +* [servlet-3.1.0.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/servlet/servlet/3.1.0/servlet-3.1.0.jar) ## License From 7f34f8376819648faa083870b0b14b5f004c7f6a Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Sun, 12 Apr 2015 20:19:17 +0200 Subject: [PATCH 033/182] Updated links and versions (added new plugins to list). --- README.md | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 6a5d7b4f..ac114960 100644 --- a/README.md +++ b/README.md @@ -206,6 +206,7 @@ Icon/other formats * ICO RGB, 16, 24 and 32 bit * CUR Indexed color, 1, 4 and 8 bit * CUR RGB, 16, 24 and 32 bit +* *3.1* Note: These formats are now part of the BMP plugin #### MS Windows Thumbs DB (Thumbs.db) @@ -492,18 +493,25 @@ ImageIO dependencies * [imageio-metadata-3.1.0.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-metadata/3.1.0/imageio-metadata-3.1.0.jar) ImageIO plugins +* [imageio-bmp-3.1.0.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-bmp/3.1.0/imageio-bmp-3.1.0.jar) * [imageio-jpeg-3.1.0.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-jpeg/3.1.0/imageio-jpeg-3.1.0.jar) * [imageio-tiff-3.1.0.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-tiff/3.1.0/imageio-tiff-3.1.0.jar) +* [imageio-pnm-3.1.0.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-pnm/3.1.0/imageio-pnm-3.1.0.jar) * [imageio-psd-3.1.0.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-psd/3.1.0/imageio-psd-3.1.0.jar) -* [imageio-pict-3.1.0.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-pict/3.1.0/imageio-pict-3.1.0.jar) * [imageio-iff-3.1.0.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-iff/3.1.0/imageio-iff-3.1.0.jar) +* [imageio-pcx-3.1.0.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-pcx/3.1.0/imageio-pcx-3.1.0.jar) +* [imageio-pict-3.1.0.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-pict/3.1.0/imageio-pict-3.1.0.jar) +* [imageio-sgi-3.1.0.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-sgi/3.1.0/imageio-sgi-3.1.0.jar) +* [imageio-tga-3.1.0.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-tga/3.1.0/imageio-tga-3.1.0.jar) * [imageio-icns-3.1.0.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-icns/3.1.0/imageio-icns-3.1.0.jar) -* [imageio-ico-3.1.0.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-ico/3.1.0/imageio-ico-3.1.0.jar) * [imageio-thumbsdb-3.1.0.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-thumbsdb/3.1.0/imageio-thumbsdb-3.1.0.jar) ImageIO plugins requiring 3rd party libs * [imageio-batik-3.1.0.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-batik/3.1.0/imageio-batik-3.1.0.jar) +Photoshop Path support for ImageIO +* [imageio-clippath-3.1.0.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-clippath/3.1.0/imageio-clippath-3.1.0.jar) + Servlet support * [servlet-3.1.0.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/servlet/servlet/3.1.0/servlet-3.1.0.jar) From f3b6d40f19154833a99098f5b46e79d7853a4f23 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Sun, 12 Apr 2015 20:41:00 +0200 Subject: [PATCH 034/182] Fixed typo. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ac114960..deaf15a3 100644 --- a/README.md +++ b/README.md @@ -130,7 +130,7 @@ Legacy formats #### Commodore Amiga/Electronic Arts Interchange File Format (IFF) -* Legacy format, allows reading popular image from the Commodore Amiga computer. +* Legacy format, allows reading popular image format from the Commodore Amiga computer. * Read support for the following file types: * ILBM Indexed color, 1-8 interleaved bit planes, including 6 bit EHB * ILBM Gray, 8 bit interleaved bit planes From 835d8a11ddd3bf6c52a04dccba18fa5a049e13c9 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Fri, 24 Apr 2015 12:43:02 +0200 Subject: [PATCH 035/182] Added download links to old version. --- README.md | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/README.md b/README.md index deaf15a3..2b98f8b0 100644 --- a/README.md +++ b/README.md @@ -32,6 +32,8 @@ Mainstream format support #### JPEG * Read support for the following JPEG "flavors": + * All JFIF compliant JPEGs + * All Exif compliant JPEGs * YCbCr JPEGs without JFIF segment (converted to RGB, using embedded ICC profile) * CMYK JPEGs (converted to RGB by default or as CMYK, using embedded ICC profile) * Adobe YCCK JPEGs (converted to RGB by default or as CMYK, using embedded ICC profile) @@ -483,6 +485,10 @@ To depend on the JPEG and TIFF plugin in your IDE or program, add all of the fol ### Links to prebuilt binaries +#### Latest version (3.1.x) + +Note: Requires Java 7 or later. + Common dependencies * [common-lang-3.1.0.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/common/common-lang/3.1.0/common-lang-3.1.0.jar) * [common-io-3.1.0.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/common/common-io/3.1.0/common-io-3.1.0.jar) @@ -515,6 +521,37 @@ Photoshop Path support for ImageIO Servlet support * [servlet-3.1.0.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/servlet/servlet/3.1.0/servlet-3.1.0.jar) +#### Old version (3.0.x) + +Note: Use this version for projects that requires Java 6 or need the JMagick support. *Does not support Java 8*. + +Common dependencies +* [common-lang-3.0.2.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/common/common-lang/3.0.2/common-lang-3.0.2.jar) +* [common-io-3.0.2.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/common/common-io/3.0.2/common-io-3.0.2.jar) +* [common-image-3.0.2.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/common/common-image/3.0.2/common-image-3.0.2.jar) + +ImageIO dependencies +* [imageio-core-3.0.2.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-core/3.0.2/imageio-core-3.0.2.jar) +* [imageio-metadata-3.0.2.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-metadata/3.0.2/imageio-metadata-3.0.2.jar) + +ImageIO plugins +* [imageio-jpeg-3.0.2.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-jpeg/3.0.2/imageio-jpeg-3.0.2.jar) +* [imageio-tiff-3.0.2.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-tiff/3.0.2/imageio-tiff-3.0.2.jar) +* [imageio-psd-3.0.2.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-psd/3.0.2/imageio-psd-3.0.2.jar) +* [imageio-pict-3.0.2.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-pict/3.0.2/imageio-pict-3.0.2.jar) +* [imageio-iff-3.0.2.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-iff/3.0.2/imageio-iff-3.0.2.jar) +* [imageio-icns-3.0.2.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-icns/3.0.2/imageio-icns-3.0.2.jar) +* [imageio-ico-3.0.2.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-ico/3.0.2/imageio-ico-3.0.2.jar) +* [imageio-thumbsdb-3.0.2.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-thumbsdb/3.0.2/imageio-thumbsdb-3.0.2.jar) + +ImageIO plugins requiring 3rd party libs +* [imageio-batik-3.0.2.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-batik/3.0.2/imageio-batik-3.0.2.jar) +* [imageio-jmagick-3.0.2.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-jmagick/3.0.2/imageio-jmagick-3.0.2.jar) + +Servlet support +* [servlet-3.0.2.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/servlet/servlet/3.0.2/servlet-3.0.2.jar) + + ## License The project is distributed under the OSI approved [BSD license](http://opensource.org/licenses/BSD-3-Clause): From 2db58dc73dbc88319d5f42e2df7f517294ac7ee0 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Fri, 24 Apr 2015 12:45:11 +0200 Subject: [PATCH 036/182] Added download links to old version. --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 2b98f8b0..eef40696 100644 --- a/README.md +++ b/README.md @@ -485,9 +485,9 @@ To depend on the JPEG and TIFF plugin in your IDE or program, add all of the fol ### Links to prebuilt binaries -#### Latest version (3.1.x) +##### Latest version (3.1.x) -Note: Requires Java 7 or later. +Requires Java 7 or later. Common dependencies * [common-lang-3.1.0.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/common/common-lang/3.1.0/common-lang-3.1.0.jar) @@ -521,9 +521,9 @@ Photoshop Path support for ImageIO Servlet support * [servlet-3.1.0.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/servlet/servlet/3.1.0/servlet-3.1.0.jar) -#### Old version (3.0.x) +##### Old version (3.0.x) -Note: Use this version for projects that requires Java 6 or need the JMagick support. *Does not support Java 8*. +Use this version for projects that requires Java 6 or need the JMagick support. *Does not support Java 8*. Common dependencies * [common-lang-3.0.2.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/common/common-lang/3.0.2/common-lang-3.0.2.jar) From 051a1dcb5bf390a1264df8aa9c438602c289d5be Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Thu, 30 Apr 2015 10:20:35 +0200 Subject: [PATCH 037/182] Preparing JPEGImageReader for extension. --- .../imageio/plugins/jpeg/JPEGImageReader.java | 172 ++++++++++++------ .../plugins/jpeg/JPEGImageReaderSpi.java | 16 +- .../plugins/jpeg/JPEGImageReaderTest.java | 9 +- 3 files changed, 138 insertions(+), 59 deletions(-) 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 04fd210e..2204e8af 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 @@ -28,7 +28,6 @@ package com.twelvemonkeys.imageio.plugins.jpeg; -import com.twelvemonkeys.image.ImageUtil; import com.twelvemonkeys.imageio.ImageReaderBase; import com.twelvemonkeys.imageio.color.ColorSpaces; import com.twelvemonkeys.imageio.metadata.CompoundDirectory; @@ -152,10 +151,10 @@ public class JPEGImageReader extends ImageReaderBase { /** Cached list of JPEG segments we filter from the underlying stream */ private List segments; - JPEGImageReader(final ImageReaderSpi provider, final ImageReader delegate) { + protected JPEGImageReader(final ImageReaderSpi provider, final ImageReader delegate) { super(provider); - this.delegate = Validate.notNull(delegate); + this.delegate = Validate.notNull(delegate); progressDelegator = new ProgressDelegator(); } @@ -298,7 +297,9 @@ public class JPEGImageReader extends ImageReaderBase { super.setInput(input, seekForwardOnly, ignoreMetadata); // JPEGSegmentImageInputStream that filters out/skips bad/unnecessary segments - delegate.setInput(imageInput != null ? new JPEGSegmentImageInputStream(imageInput) : null, seekForwardOnly, ignoreMetadata); + delegate.setInput(imageInput != null + ? new JPEGSegmentImageInputStream(imageInput) + : null, seekForwardOnly, ignoreMetadata); } @Override @@ -629,7 +630,7 @@ public class JPEGImageReader extends ImageReaderBase { } } - private ICC_Profile ensureDisplayProfile(final ICC_Profile profile) { + protected ICC_Profile ensureDisplayProfile(final ICC_Profile profile) { // NOTE: This is probably not the right way to do it... :-P // TODO: Consider moving method to ColorSpaces class or new class in imageio.color package @@ -835,7 +836,7 @@ public class JPEGImageReader extends ImageReaderBase { return data; } - ICC_Profile getEmbeddedICCProfile(final boolean allowBadIndexes) throws IOException { + protected ICC_Profile getEmbeddedICCProfile(final boolean allowBadIndexes) throws IOException { // ICC v 1.42 (2006) annex B: // APP2 marker (0xFFE2) + 2 byte length + ASCII 'ICC_PROFILE' + 0 (termination) // + 1 byte chunk number + 1 byte chunk count (allows ICC profiles chunked in multiple APP2 segments) @@ -1301,7 +1302,58 @@ public class JPEGImageReader extends ImageReaderBase { } public static void main(final String[] args) throws IOException { - for (final String arg : args) { + ImageIO.setUseCache(false); + + int subX = 1; + int subY = 1; + Rectangle roi = null; + boolean metadata = false; + boolean thumbnails = false; + + for (int argIdx = 0; argIdx < args.length; argIdx++) { + final String arg = args[argIdx]; + + if (arg.charAt(0) == '-') { + if (arg.equals("-s") || arg.equals("--subsample") && args.length > argIdx) { + String[] sub = args[++argIdx].split(","); + + try { + subX = Integer.parseInt(sub[0]); + subY = sub.length > 1 ? Integer.parseInt(sub[1]) : subX; + } + catch (NumberFormatException e) { + System.err.println("Bad sub sampling (x,y): '" + args[argIdx] + "'"); + } + } + else if (arg.equals("-r") || arg.equals("--roi") && args.length > argIdx) { + String[] region = args[++argIdx].split(","); + + try { + if (region.length >= 4) { + roi = new Rectangle(Integer.parseInt(region[0]), Integer.parseInt(region[2]), Integer.parseInt(region[2]), Integer.parseInt(region[3])); + } + else { + roi = new Rectangle(Integer.parseInt(region[0]), Integer.parseInt(region[2])); + } + } + catch (IndexOutOfBoundsException | NumberFormatException e) { + System.err.println("Bad source region ([x,y,]w, h): '" + args[argIdx] + "'"); + } + } + else if (arg.equals("-m") || arg.equals("--metadata")) { + metadata = true; + } + else if (arg.equals("-t") || arg.equals("--thumbnails")) { + thumbnails = true; + } + else { + System.err.println("Unknown argument: '" + arg + "'"); + System.exit(-1); + } + + continue; + } + File file = new File(arg); ImageInputStream input = ImageIO.createImageInputStream(file); @@ -1317,15 +1369,15 @@ public class JPEGImageReader extends ImageReaderBase { continue; } - ImageReader reader = readers.next(); -// System.err.println("Reading using: " + reader); + final ImageReader reader = readers.next(); + System.err.println("Reading using: " + reader); reader.addIIOReadWarningListener(new IIOReadWarningListener() { public void warningOccurred(ImageReader source, String warning) { System.err.println("Warning: " + arg + ": " + warning); } }); - reader.addIIOReadProgressListener(new ProgressListenerBase() { + final ProgressListenerBase listener = new ProgressListenerBase() { private static final int MAX_W = 78; int lastProgress = 0; @@ -1354,29 +1406,35 @@ public class JPEGImageReader extends ImageReaderBase { System.out.println("]"); } - }); + }; + reader.addIIOReadProgressListener(listener); reader.setInput(input); - // For a tables-only image, we can't read image, but we should get metadata. - if (reader.getNumImages(true) == 0) { - IIOMetadata streamMetadata = reader.getStreamMetadata(); - IIOMetadataNode streamNativeTree = (IIOMetadataNode) streamMetadata.getAsTree(streamMetadata.getNativeMetadataFormatName()); - new XMLSerializer(System.out, System.getProperty("file.encoding")).serialize(streamNativeTree, false); - continue; - } - try { + // For a tables-only image, we can't read image, but we should get metadata. + if (reader.getNumImages(true) == 0) { + IIOMetadata streamMetadata = reader.getStreamMetadata(); + IIOMetadataNode streamNativeTree = (IIOMetadataNode) streamMetadata.getAsTree(streamMetadata.getNativeMetadataFormatName()); + new XMLSerializer(System.out, System.getProperty("file.encoding")).serialize(streamNativeTree, false); + continue; + } + + BufferedImage image; ImageReadParam param = reader.getDefaultReadParam(); -// if (args.length > 1) { -// int sub = Integer.parseInt(args[1]); -// int sub = 4; -// param.setSourceSubsampling(sub, sub, 0, 0); -// } - BufferedImage image = reader.getImageTypes(0).next().createBufferedImage(reader.getWidth(0), reader.getHeight(0)); + if (subX > 1 || subY > 1 || roi != null) { + param.setSourceSubsampling(subX, subY, 0, 0); + param.setSourceRegion(roi); + + image = reader.getImageTypes(0).next().createBufferedImage((reader.getWidth(0) + subX - 1)/ subX, (reader.getHeight(0) + subY - 1) / subY); + } + else { + image = reader.getImageTypes(0).next().createBufferedImage(reader.getWidth(0), reader.getHeight(0)); + } param.setDestination(image); -// long start = System.currentTimeMillis(); + long start = DEBUG ? System.currentTimeMillis() : 0; + try { image = reader.read(0, param); } @@ -1387,12 +1445,13 @@ public class JPEGImageReader extends ImageReaderBase { continue; } } -// System.err.println("Read time: " + (System.currentTimeMillis() - start) + " ms"); -// System.err.println("image: " + image); + if (DEBUG) { + System.err.println("Read time: " + (System.currentTimeMillis() - start) + " ms"); + System.err.println("image: " + image); + } -// image = new ResampleOp(reader.getWidth(0) / 4, reader.getHeight(0) / 4, ResampleOp.FILTER_LANCZOS).filter(image, null); - + /* int maxW = 1280; int maxH = 800; if (image.getWidth() > maxW || image.getHeight() > maxH) { @@ -1406,34 +1465,45 @@ public class JPEGImageReader extends ImageReaderBase { } // System.err.println("Scale time: " + (System.currentTimeMillis() - start) + " ms"); } + */ showIt(image, String.format("Image: %s [%d x %d]", file.getName(), reader.getWidth(0), reader.getHeight(0))); - try { - IIOMetadata imageMetadata = reader.getImageMetadata(0); - System.out.println("Metadata for File: " + file.getName()); + if (metadata) { + try { + IIOMetadata imageMetadata = reader.getImageMetadata(0); + System.out.println("Metadata for File: " + file.getName()); - if (imageMetadata.getNativeMetadataFormatName() != null) { - System.out.println("Native:"); - new XMLSerializer(System.out, System.getProperty("file.encoding")).serialize(imageMetadata.getAsTree(imageMetadata.getNativeMetadataFormatName()), false); + if (imageMetadata.getNativeMetadataFormatName() != null) { + System.out.println("Native:"); + new XMLSerializer(System.out, System.getProperty("file.encoding")).serialize(imageMetadata.getAsTree(imageMetadata.getNativeMetadataFormatName()), false); + } + if (imageMetadata.isStandardMetadataFormatSupported()) { + System.out.println("Standard:"); + new XMLSerializer(System.out, System.getProperty("file.encoding")).serialize(imageMetadata.getAsTree(IIOMetadataFormatImpl.standardMetadataFormatName), false); + } + + System.out.println(); } - if (imageMetadata.isStandardMetadataFormatSupported()) { - System.out.println("Standard:"); - new XMLSerializer(System.out, System.getProperty("file.encoding")).serialize(imageMetadata.getAsTree(IIOMetadataFormatImpl.standardMetadataFormatName), false); - } - - System.out.println(); - - int numThumbnails = reader.getNumThumbnails(0); - for (int i = 0; i < numThumbnails; i++) { - BufferedImage thumbnail = reader.readThumbnail(0, i); -// System.err.println("thumbnail: " + thumbnail); - showIt(thumbnail, String.format("Thumbnail: %s [%d x %d]", file.getName(), thumbnail.getWidth(), thumbnail.getHeight())); + catch (IIOException e) { + System.err.println("Could not read thumbnails: " + arg + ": " + e.getMessage()); + e.printStackTrace(); } } - catch (IIOException e) { - System.err.println("Could not read thumbnails: " + arg + ": " + e.getMessage()); - e.printStackTrace(); + + if (thumbnails) { + try { + int numThumbnails = reader.getNumThumbnails(0); + for (int i = 0; i < numThumbnails; i++) { + BufferedImage thumbnail = reader.readThumbnail(0, i); + // System.err.println("thumbnail: " + thumbnail); + showIt(thumbnail, String.format("Thumbnail: %s [%d x %d]", file.getName(), thumbnail.getWidth(), thumbnail.getHeight())); + } + } + catch (IIOException e) { + System.err.println("Could not read thumbnails: " + arg + ": " + e.getMessage()); + e.printStackTrace(); + } } } catch (Throwable t) { diff --git a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReaderSpi.java b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReaderSpi.java index efe0f4de..adf926e5 100644 --- a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReaderSpi.java +++ b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReaderSpi.java @@ -29,6 +29,7 @@ package com.twelvemonkeys.imageio.plugins.jpeg; import com.twelvemonkeys.imageio.spi.ImageReaderSpiBase; +import com.twelvemonkeys.imageio.spi.ReaderWriterProviderInfo; import com.twelvemonkeys.imageio.util.IIOUtil; import com.twelvemonkeys.lang.Validate; @@ -48,14 +49,14 @@ import java.util.Locale; * @version $Id: JPEGImageReaderSpi.java,v 1.0 24.01.11 22.12 haraldk Exp$ */ public class JPEGImageReaderSpi extends ImageReaderSpiBase { - private ImageReaderSpi delegateProvider; + protected ImageReaderSpi delegateProvider; /** * Constructor for use by {@link javax.imageio.spi.IIORegistry} only. * The instance created will not work without being properly registered. */ public JPEGImageReaderSpi() { - super(new JPEGProviderInfo()); + this(new JPEGProviderInfo()); } /** @@ -69,6 +70,15 @@ public class JPEGImageReaderSpi extends ImageReaderSpiBase { this.delegateProvider = Validate.notNull(delegateProvider); } + /** + * Constructor for subclasses. + * + * @param info + */ + protected JPEGImageReaderSpi(final ReaderWriterProviderInfo info) { + super(info); + } + static ImageReaderSpi lookupDelegateProvider(final ServiceRegistry registry) { Iterator providers = registry.getServiceProviders(ImageReaderSpi.class, true); @@ -83,7 +93,7 @@ public class JPEGImageReaderSpi extends ImageReaderSpiBase { return null; } - @SuppressWarnings({"unchecked"}) + @SuppressWarnings({"unchecked", "deprecation"}) @Override public void onRegistration(final ServiceRegistry registry, final Class category) { if (delegateProvider == null) { diff --git a/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReaderTest.java b/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReaderTest.java index 7b4c460b..ee3dd3c6 100644 --- a/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReaderTest.java +++ b/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReaderTest.java @@ -63,8 +63,7 @@ import static org.junit.Assume.assumeNoException; import static org.junit.Assume.assumeNotNull; import static org.mockito.Matchers.anyString; import static org.mockito.Matchers.eq; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.*; /** * JPEGImageReaderTest @@ -75,9 +74,9 @@ import static org.mockito.Mockito.verify; */ public class JPEGImageReaderTest extends ImageReaderAbstractTest { - private static final JPEGImageReaderSpi SPI = new JPEGImageReaderSpi(lookupDelegateProvider()); + protected static final JPEGImageReaderSpi SPI = new JPEGImageReaderSpi(lookupDelegateProvider()); - private static ImageReaderSpi lookupDelegateProvider() { + protected static ImageReaderSpi lookupDelegateProvider() { return JPEGImageReaderSpi.lookupDelegateProvider(IIORegistry.getDefaultInstance()); } @@ -370,7 +369,7 @@ public class JPEGImageReaderTest extends ImageReaderAbstractTest Date: Thu, 30 Apr 2015 10:21:35 +0200 Subject: [PATCH 038/182] TMI-TIFF: Faster LZW encoder. --- .../imageio/plugins/tiff/LZWEncoder.java | 219 +++++++++--------- 1 file changed, 109 insertions(+), 110 deletions(-) diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/LZWEncoder.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/LZWEncoder.java index a5a4e333..47afa666 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/LZWEncoder.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/LZWEncoder.java @@ -33,21 +33,22 @@ import com.twelvemonkeys.io.enc.Encoder; import java.io.IOException; import java.io.OutputStream; import java.nio.ByteBuffer; -import java.util.Map; -import java.util.TreeMap; - -import static com.twelvemonkeys.imageio.plugins.tiff.LZWDecoder.LZWString; +import java.util.Arrays; /** * LZWEncoder + *

+ * Inspired by LZWTreeEncoder by Wen Yu and the + * algorithm described by Bob Montgomery + * which + * "[...] uses a tree method to search if a new string is already in the table, + * which is much simpler, faster, and easier to understand than hashing." * * @author Harald Kuhr * @author last modified by $Author: haraldk$ * @version $Id: LZWEncoder.java,v 1.0 02.12.13 14:13 haraldk Exp$ */ final class LZWEncoder implements Encoder { - // TODO: Consider extracting LZWStringTable from LZWDecoder - /** Clear: Re-initialize tables. */ static final int CLEAR_CODE = 256; /** End of Information. */ @@ -58,16 +59,18 @@ final class LZWEncoder implements Encoder { private static final int TABLE_SIZE = 1 << MAX_BITS; - private final LZWString[] table = new LZWString[TABLE_SIZE]; - private final Map reverseTable = new TreeMap<>(); // This is foobar -// private final Map reverseTable = new HashMap<>(TABLE_SIZE); // This is foobar - private int tableLength; - LZWString omega = LZWString.EMPTY; + // A child is made up of a parent (or prefix) code plus a suffix byte + // and siblings are strings with a common parent(or prefix) and different + // suffix bytes + private final short[] CHILDREN = new short[TABLE_SIZE]; + private final short[] SIBLINGS = new short[TABLE_SIZE]; + private final short[] SUFFIXES = new short[TABLE_SIZE]; - int bitsPerCode; - private int oldCode = CLEAR_CODE; - private int maxCode; - int bitMask; + // Initial setup + private int parent = -1; + private int bitsPerCode = MIN_BITS; + private int nextValidCode = EOI_CODE + 1; + private int maxCode = maxValue(bitsPerCode); // Buffer for partial codes private int bits = 0; @@ -76,120 +79,116 @@ final class LZWEncoder implements Encoder { // Keep track of how many bytes we will write, to make sure we write EOI at correct position private long remaining; - protected LZWEncoder(final int length) { - this.remaining = length; - - // First 258 entries of table is always fixed - for (int i = 0; i < 256; i++) { - table[i] = new LZWString((byte) i); - } - - init(); - } - - private void init() { - tableLength = 258; - bitsPerCode = MIN_BITS; - bitMask = bitmaskFor(bitsPerCode); - maxCode = maxCode(); - reverseTable.clear(); + LZWEncoder(final long length) { + remaining = length; } + @Override public void encode(final OutputStream stream, final ByteBuffer buffer) throws IOException { -// InitializeStringTable(); -// WriteCode(ClearCode); -// Ω = the empty string; -// for each character in the strip { -// K = GetNextCharacter(); -// if Ω+K is in the string table { -// Ω = Ω+K;/* string concatenation */ -// } -// else{ -// WriteCode (CodeFromString( Ω)); -// AddTableEntry(Ω+K); -// Ω=K; -// } }/*end of for loop*/ -// WriteCode (CodeFromString(Ω)); -// WriteCode (EndOfInformation); + encodeBytes(stream, buffer); - if (remaining < 0) { - throw new IOException("Write past end of stream"); - } - - // TODO: Write 9 bit clear code ONLY first time! - if (oldCode == CLEAR_CODE) { - writeCode(stream, CLEAR_CODE); - } - - int len = buffer.remaining(); - - while (buffer.hasRemaining()) { - byte k = buffer.get(); - - LZWString string = omega.concatenate(k); - - int tableIndex = isInTable(string); - if (tableIndex >= 0) { - omega = string; - oldCode = tableIndex; - } - else { - writeCode(stream, oldCode); - addStringToTable(string); - oldCode = k & 0xff; - omega = table[k & 0xff]; - - // Handle table (almost) full - if (tableLength >= TABLE_SIZE - 2) { - writeCode(stream, CLEAR_CODE); - init(); - } - } - } - - remaining -= len; - - // Write EOI when er are done (the API isn't very supportive of this) if (remaining <= 0) { - writeCode(stream, oldCode); + // Write EOI when er are done (the API isn't very supportive of this at the moment) + writeCode(stream, parent); writeCode(stream, EOI_CODE); + + // Flush partial codes by writing 0 pad if (bitPos > 0) { writeCode(stream, 0); } } } - private int isInTable(final LZWString string) { - if (string.length == 1) { - return string.value & 0xff; + void encodeBytes(final OutputStream stream, final ByteBuffer buffer) throws IOException { + int length = buffer.remaining(); + + if (length == 0) { + return; } - Integer index = reverseTable.get(string); - return index != null ? index : -1; + if (parent == -1) { + // Init stream + writeCode(stream, CLEAR_CODE); + parent = buffer.get() & 0xff; + } + + while (buffer.hasRemaining()) { + int value = buffer.get() & 0xff; + int child = CHILDREN[parent]; + + if (child > 0) { + if (SUFFIXES[child] == value) { + parent = child; + } + else { + int sibling = child; + + while (true) { + if (SIBLINGS[sibling] > 0) { + sibling = SIBLINGS[sibling]; + + if (SUFFIXES[sibling] == value) { + parent = sibling; + break; + } + } + else { + SIBLINGS[sibling] = (short) nextValidCode; + SUFFIXES[nextValidCode] = (short) value; + writeCode(stream, parent); + parent = value; + nextValidCode++; + + increaseCodeSizeOrResetIfNeeded(stream); + + break; + } + } + } + } + else { + CHILDREN[parent] = (short) nextValidCode; + SUFFIXES[nextValidCode] = (short) value; + writeCode(stream, parent); + parent = value; + nextValidCode++; + + increaseCodeSizeOrResetIfNeeded(stream); + } + } + + remaining -= length; } - private int addStringToTable(final LZWString string) { - final int index = tableLength++; - table[index] = string; - reverseTable.put(string, index); + private void increaseCodeSizeOrResetIfNeeded(final OutputStream stream) throws IOException { + if (nextValidCode > maxCode) { + if (bitsPerCode == MAX_BITS) { + // Reset stream by writing Clear code + writeCode(stream, CLEAR_CODE); - if (tableLength > maxCode) { - bitsPerCode++; - - if (bitsPerCode > MAX_BITS) { - throw new IllegalStateException(String.format("TIFF LZW with more than %d bits per code encountered (table overflow)", MAX_BITS)); + // Reset tables + resetTables(); + } + else { + // Increase code size + bitsPerCode++; + maxCode = maxValue(bitsPerCode); } - - bitMask = bitmaskFor(bitsPerCode); - maxCode = maxCode(); } + } - return index; + private void resetTables() { + Arrays.fill(CHILDREN, (short) 0); + Arrays.fill(SIBLINGS, (short) 0); + + bitsPerCode = MIN_BITS; + maxCode = maxValue(bitsPerCode); + nextValidCode = EOI_CODE + 1; } private void writeCode(final OutputStream stream, final int code) throws IOException { // System.err.printf("LZWEncoder.writeCode: 0x%04x\n", code); - bits = (bits << bitsPerCode) | (code & bitMask); + bits = (bits << bitsPerCode) | (code & maxCode); bitPos += bitsPerCode; while (bitPos >= 8) { @@ -202,11 +201,11 @@ final class LZWEncoder implements Encoder { bits &= bitmaskFor(bitPos); } - private static int bitmaskFor(final int bits) { - return (1 << bits) - 1; + private static int maxValue(final int codeLen) { + return (1 << codeLen) - 1; } - protected int maxCode() { - return bitMask; + private static int bitmaskFor(final int bits) { + return maxValue(bits); } -} +} \ No newline at end of file From 9b71a0cba7c5d6f5a554ec830b8a047d299646bc Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Tue, 5 May 2015 11:40:54 +0200 Subject: [PATCH 039/182] TMI-134: Cannot read PSD images with PSD Layer Mask data size 28 --- .../imageio/plugins/psd/PSDLayerInfo.java | 2 +- .../imageio/plugins/psd/PSDLayerMaskData.java | 122 +++++++++++++----- 2 files changed, 93 insertions(+), 31 deletions(-) diff --git a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDLayerInfo.java b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDLayerInfo.java index 1fc8fd82..237ad729 100755 --- a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDLayerInfo.java +++ b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDLayerInfo.java @@ -74,7 +74,7 @@ final class PSDLayerInfo { long extraDataSize = pInput.readUnsignedInt(); // Layer mask/adjustment layer data - int layerMaskDataSize = pInput.readInt(); // May be 0, 20 or 36 bytes... + int layerMaskDataSize = pInput.readInt(); // May be 0, 20 or variable (up to 55) bytes... if (layerMaskDataSize != 0) { layerMaskData = new PSDLayerMaskData(pInput, layerMaskDataSize); } diff --git a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDLayerMaskData.java b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDLayerMaskData.java index aa13943c..28e27b9c 100755 --- a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDLayerMaskData.java +++ b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDLayerMaskData.java @@ -47,42 +47,90 @@ final class PSDLayerMaskData { private int defaultColor; private int flags; - private boolean large; - private int realFlags; - private int realUserBackground; - private int realTop; - private int realLeft; - private int realBottom; - private int realRight; + private int maskParams; + private int userMaskDensity; + private double userMaskFeather; + private int vectorMaskDensity; + private double vectorMaskFeather; PSDLayerMaskData(final ImageInputStream pInput, final int pSize) throws IOException { - if (pSize != 20 && pSize != 36) { - throw new IIOException("Illegal PSD Layer Mask data size: " + pSize + " (expected 20 or 36)"); + if (pSize < 20 || pSize > 55) { + throw new IIOException("Illegal PSD Layer Mask data size: " + pSize + " (expected between 20 and 55)"); } + // Rectangle enclosing layer mask: Top, left, bottom, right. top = pInput.readInt(); left = pInput.readInt(); bottom = pInput.readInt(); right = pInput.readInt(); + // Default color. 0 or 255 defaultColor = pInput.readUnsignedByte(); + // Flags. + // bit 0 = position relative to layer + // bit 1 = layer mask disabled + // bit 2 = invert layer mask when blending (Obsolete) + // bit 3 = indicates that the user mask actually came from rendering other data + // bit 4 = indicates that the user and/or vector masks have parameters applied to them flags = pInput.readUnsignedByte(); - if (pSize == 20) { + int dataLeft = pSize - 18; + + if ((flags & 0x10) != 0) { + // Mask Parameters. Only present if bit 4 of Flags set above. + maskParams = pInput.readUnsignedByte(); + dataLeft--; + + // Mask Parameters bit flags present as follows: + // bit 0 = user mask density, 1 byte + // bit 1 = user mask feather, 8 byte, double + // bit 2 = vector mask density, 1 byte + // bit 3 = vector mask feather, 8 bytes, double + if ((maskParams & 0x01) != 0) { + userMaskDensity = pInput.readByte(); + dataLeft--; + } + if ((maskParams & 0x02) != 0) { + userMaskFeather = pInput.readDouble(); + dataLeft -= 8; + } + if ((maskParams & 0x04) != 0) { + vectorMaskDensity = pInput.readByte(); + dataLeft--; + } + if ((maskParams & 0x08) != 0) { + vectorMaskFeather = pInput.readDouble(); + dataLeft -= 8; + } + } + + // Padding. Only present if size = 20. Otherwise the following is present + if (pSize == 20 && dataLeft == 2) { pInput.readShort(); // Pad + dataLeft -= 2; } else { - // TODO: What to make out of this? - large = true; + if (dataLeft >= 2) { + // Real Flags. Same as Flags information above. + flags = pInput.readUnsignedByte(); + dataLeft--; + // Real user mask background. 0 or 255. + defaultColor = pInput.readUnsignedByte(); + dataLeft--; + } + if (dataLeft >= 16) { + // Rectangle enclosing layer mask: Top, left, bottom, right. + top = pInput.readInt(); + left = pInput.readInt(); + bottom = pInput.readInt(); + right = pInput.readInt(); + dataLeft -= 16; + } + } - realFlags = pInput.readUnsignedByte(); - realUserBackground = pInput.readUnsignedByte(); - - realTop = pInput.readInt(); - realLeft = pInput.readInt(); - realBottom = pInput.readInt(); - realRight = pInput.readInt(); + if (dataLeft > 0) { + pInput.skipBytes(dataLeft); } } @@ -97,40 +145,54 @@ final class PSDLayerMaskData { builder.append(", default color: ").append(defaultColor); builder.append(", flags: ").append(Integer.toBinaryString(flags)); - // TODO: Maybe the flag bits have oposite order? builder.append(" ("); if ((flags & 0x01) != 0) { - builder.append("Pos. rel. to layer"); + builder.append("relative"); } else { - builder.append("Pos. abs."); + builder.append("absolute"); } if ((flags & 0x02) != 0) { - builder.append(", Mask disabled"); + builder.append(", disabled"); } else { - builder.append(", Mask enabled"); + builder.append(", enabled"); } if ((flags & 0x04) != 0) { - builder.append(", Invert mask"); + builder.append(", inverted"); } if ((flags & 0x08) != 0) { - builder.append(", Unknown bit 3"); + builder.append(", from rendered data"); } if ((flags & 0x10) != 0) { - builder.append(", Unknown bit 4"); + builder.append(", has parameters"); } if ((flags & 0x20) != 0) { - builder.append(", Unknown bit 5"); + builder.append(", unknown flag (bit 5)"); } if ((flags & 0x40) != 0) { - builder.append(", Unknown bit 6"); + builder.append(", unknown flag (bit 6)"); } if ((flags & 0x80) != 0) { - builder.append(", Unknown bit 7"); + builder.append(", unknown flag (bit 7)"); } builder.append(")"); + if ((flags & 0x10) != 0) { + if ((maskParams & 0x01) != 0) { + builder.append(", userMaskDensity: ").append(userMaskDensity); + } + if ((maskParams & 0x02) != 0) { + builder.append(", userMaskFeather: ").append(userMaskFeather); + } + if ((maskParams & 0x04) != 0) { + builder.append(", vectorMaskDensity: ").append(vectorMaskDensity); + } + if ((maskParams & 0x08) != 0) { + builder.append(", vectorMaskFeather: ").append(vectorMaskFeather); + } + } + builder.append("]"); return builder.toString(); } From 203b330c9964ba23aa855d3f65cb8da687ec9ad7 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Wed, 27 May 2015 15:47:26 +0200 Subject: [PATCH 040/182] TM-138: DateUtil doesn't support sub-hour offset timezones. --- .../java/com/twelvemonkeys/lang/DateUtil.java | 25 ++++++--- .../com/twelvemonkeys/lang/DateUtilTest.java | 52 +++++++++++++++++-- 2 files changed, 67 insertions(+), 10 deletions(-) diff --git a/common/common-lang/src/main/java/com/twelvemonkeys/lang/DateUtil.java b/common/common-lang/src/main/java/com/twelvemonkeys/lang/DateUtil.java index 09e9f5e9..1234eb3c 100755 --- a/common/common-lang/src/main/java/com/twelvemonkeys/lang/DateUtil.java +++ b/common/common-lang/src/main/java/com/twelvemonkeys/lang/DateUtil.java @@ -142,7 +142,7 @@ public final class DateUtil { * @param pTime time * @return the time rounded to the closest second. */ - public static long roundToSecond(long pTime) { + public static long roundToSecond(final long pTime) { return (pTime / SECOND) * SECOND; } @@ -152,7 +152,7 @@ public final class DateUtil { * @param pTime time * @return the time rounded to the closest minute. */ - public static long roundToMinute(long pTime) { + public static long roundToMinute(final long pTime) { return (pTime / MINUTE) * MINUTE; } @@ -162,9 +162,20 @@ public final class DateUtil { * @param pTime time * @return the time rounded to the closest hour. */ - public static long roundToHour(long pTime) { - // TODO: What if timezone offset is sub hour? Are there any? I think so... - return ((pTime / HOUR) * HOUR); + public static long roundToHour(final long pTime) { + return roundToHour(pTime, TimeZone.getDefault()); + } + + /** + * Rounds the given time down to the closest hour, using the given timezone. + * + * @param pTime time + * @param pTimeZone the timezone to use when rounding + * @return the time rounded to the closest hour. + */ + public static long roundToHour(final long pTime, final TimeZone pTimeZone) { + int offset = pTimeZone.getOffset(pTime); + return ((pTime / HOUR) * HOUR) - offset; } /** @@ -173,7 +184,7 @@ public final class DateUtil { * @param pTime time * @return the time rounded to the closest day. */ - public static long roundToDay(long pTime) { + public static long roundToDay(final long pTime) { return roundToDay(pTime, TimeZone.getDefault()); } @@ -184,7 +195,7 @@ public final class DateUtil { * @param pTimeZone the timezone to use when rounding * @return the time rounded to the closest day. */ - public static long roundToDay(long pTime, TimeZone pTimeZone) { + public static long roundToDay(final long pTime, final TimeZone pTimeZone) { int offset = pTimeZone.getOffset(pTime); return (((pTime + offset) / DAY) * DAY) - offset; } diff --git a/common/common-lang/src/test/java/com/twelvemonkeys/lang/DateUtilTest.java b/common/common-lang/src/test/java/com/twelvemonkeys/lang/DateUtilTest.java index f6dce2ab..05f2268e 100644 --- a/common/common-lang/src/test/java/com/twelvemonkeys/lang/DateUtilTest.java +++ b/common/common-lang/src/test/java/com/twelvemonkeys/lang/DateUtilTest.java @@ -29,11 +29,15 @@ package com.twelvemonkeys.lang; import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; +import java.util.Arrays; import java.util.Calendar; +import java.util.List; import java.util.TimeZone; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; /** * DateUtilTest @@ -42,9 +46,30 @@ import static org.junit.Assert.*; * @author last modified by $Author: haraldk$ * @version $Id: DateUtilTest.java,v 1.0 11.04.12 16:21 haraldk Exp$ */ +@RunWith(Parameterized.class) public class DateUtilTest { - private static Calendar getCalendar(long time) { - Calendar calendar = Calendar.getInstance(TimeZone.getDefault()); + + private final TimeZone timeZone; + + @Parameterized.Parameters + public static List timeZones() { + return Arrays.asList(new Object[][] { + {TimeZone.getTimeZone("UTC")}, + {TimeZone.getTimeZone("CET")}, + {TimeZone.getTimeZone("IST")}, // 30 min off + }); + } + + public DateUtilTest(final TimeZone timeZone) { + this.timeZone = timeZone; + } + + private Calendar getCalendar(long time) { + return getCalendar(time, TimeZone.getDefault()); + } + + private Calendar getCalendar(long time, final TimeZone timeZone) { + Calendar calendar = Calendar.getInstance(timeZone); calendar.setTimeInMillis(time); return calendar; @@ -74,6 +99,15 @@ public class DateUtilTest { assertEquals(0, calendar.get(Calendar.MINUTE)); } + @Test + public void testRoundToHourTZ() { + Calendar calendar = getCalendar(DateUtil.roundToHour(System.currentTimeMillis(), timeZone), timeZone); + + assertEquals(0, calendar.get(Calendar.MILLISECOND)); + assertEquals(0, calendar.get(Calendar.SECOND)); + assertEquals(0, calendar.get(Calendar.MINUTE)); + } + @Test public void testRoundToDay() { Calendar calendar = getCalendar(DateUtil.roundToDay(System.currentTimeMillis())); @@ -84,6 +118,16 @@ public class DateUtilTest { assertEquals(0, calendar.get(Calendar.HOUR_OF_DAY)); } + @Test + public void testRoundToDayTZ() { + Calendar calendar = getCalendar(DateUtil.roundToDay(System.currentTimeMillis(), timeZone), timeZone); + + assertEquals(0, calendar.get(Calendar.MILLISECOND)); + assertEquals(0, calendar.get(Calendar.SECOND)); + assertEquals(0, calendar.get(Calendar.MINUTE)); + assertEquals(0, calendar.get(Calendar.HOUR_OF_DAY)); + } + @Test public void testCurrentTimeSecond() { Calendar calendar = getCalendar(DateUtil.currentTimeSecond()); @@ -106,6 +150,7 @@ public class DateUtilTest { assertEquals(0, calendar.get(Calendar.MILLISECOND)); assertEquals(0, calendar.get(Calendar.SECOND)); assertEquals(0, calendar.get(Calendar.MINUTE)); +// assertEquals((TimeZone.getDefault().getOffset(calendar.getTimeInMillis()) / DateUtil.MINUTE) % 60, calendar.get(Calendar.MINUTE)); } @Test @@ -114,6 +159,7 @@ public class DateUtilTest { assertEquals(0, calendar.get(Calendar.MILLISECOND)); assertEquals(0, calendar.get(Calendar.SECOND)); +// assertEquals((TimeZone.getDefault().getOffset(calendar.getTimeInMillis()) / DateUtil.MINUTE) % 60, calendar.get(Calendar.MINUTE)); assertEquals(0, calendar.get(Calendar.MINUTE)); assertEquals(0, calendar.get(Calendar.HOUR_OF_DAY)); } From 1ed5b3899bc92cda09c5f1e1e0ee52bde6f9938b Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Wed, 27 May 2015 15:50:35 +0200 Subject: [PATCH 041/182] TM-138: DateUtil doesn't support sub-hour offset timezones. --- .../src/test/java/com/twelvemonkeys/lang/DateUtilTest.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/common/common-lang/src/test/java/com/twelvemonkeys/lang/DateUtilTest.java b/common/common-lang/src/test/java/com/twelvemonkeys/lang/DateUtilTest.java index 05f2268e..6f4959e1 100644 --- a/common/common-lang/src/test/java/com/twelvemonkeys/lang/DateUtilTest.java +++ b/common/common-lang/src/test/java/com/twelvemonkeys/lang/DateUtilTest.java @@ -150,7 +150,6 @@ public class DateUtilTest { assertEquals(0, calendar.get(Calendar.MILLISECOND)); assertEquals(0, calendar.get(Calendar.SECOND)); assertEquals(0, calendar.get(Calendar.MINUTE)); -// assertEquals((TimeZone.getDefault().getOffset(calendar.getTimeInMillis()) / DateUtil.MINUTE) % 60, calendar.get(Calendar.MINUTE)); } @Test @@ -159,7 +158,6 @@ public class DateUtilTest { assertEquals(0, calendar.get(Calendar.MILLISECOND)); assertEquals(0, calendar.get(Calendar.SECOND)); -// assertEquals((TimeZone.getDefault().getOffset(calendar.getTimeInMillis()) / DateUtil.MINUTE) % 60, calendar.get(Calendar.MINUTE)); assertEquals(0, calendar.get(Calendar.MINUTE)); assertEquals(0, calendar.get(Calendar.HOUR_OF_DAY)); } From c97ebae303f61547d042705a1bca2d5a655ef264 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Wed, 27 May 2015 15:53:50 +0200 Subject: [PATCH 042/182] Fixed JavaDoc (you're welcome Sigi ;-)). --- .../imageio/plugins/tiff/CCITTFaxDecoderStream.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxDecoderStream.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxDecoderStream.java index 79cec686..929cc8da 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxDecoderStream.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxDecoderStream.java @@ -36,7 +36,7 @@ import java.io.IOException; import java.io.InputStream; /** - * CCITT Modified Huffman RLE, Group 3 (T4) and Group 4 (T6) fax compression. + * CCITT Modified Huffman RLE. * * @author Harald Kuhr * @author last modified by $Author: haraldk$ From bbaa3e1186f5e38b2198d754fd4683f30c2adc81 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Thu, 28 May 2015 23:01:51 +0200 Subject: [PATCH 043/182] TMI-140: JPEG with corrupted ICC profile (new kind) can now be read. --- .../imageio/color/ColorSpaces.java | 27 +++++++++++++++++- .../imageio/plugins/jpeg/JPEGImageReader.java | 27 +++++++++++++----- .../plugins/jpeg/JPEGImageReaderTest.java | 1 + .../resources/jpeg/corrupted-icc-srgb.jpg | Bin 0 -> 247275 bytes 4 files changed, 47 insertions(+), 8 deletions(-) create mode 100644 imageio/imageio-jpeg/src/test/resources/jpeg/corrupted-icc-srgb.jpg diff --git a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/ColorSpaces.java b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/ColorSpaces.java index 6720146e..7a408615 100644 --- a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/ColorSpaces.java +++ b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/ColorSpaces.java @@ -161,6 +161,11 @@ public final class ColorSpaces { if (cs == null) { cs = new ICC_ColorSpace(profile); + + // Validate the color space, to avoid caching bad color spaces + // Will throw IllegalArgumentException or CMMException if the profile is bad + cs.fromRGB(new float[] {1f, 0f, 0f}); + cache.put(key, cs); } @@ -195,7 +200,7 @@ public final class ColorSpaces { * @return {@code true} if known to be offending, {@code false} otherwise * @throws IllegalArgumentException if {@code profile} is {@code null} */ - public static boolean isOffendingColorProfile(final ICC_Profile profile) { + static boolean isOffendingColorProfile(final ICC_Profile profile) { Validate.notNull(profile, "profile"); // NOTE: @@ -213,6 +218,26 @@ public final class ColorSpaces { return data[ICC_Profile.icHdrRenderingIntent] != 0; } + /** + * Tests whether an ICC color profile is valid. + * Invalid profiles are known to cause problems for {@link java.awt.image.ColorConvertOp}. + *

+ * + * Note that this method only tests if a color conversion using this profile is known to fail. + * There's no guarantee that the color conversion will succeed even if this method returns {@code false}. + * + * + * @param profile the ICC color profile. May not be {@code null}. + * @return {@code profile} if valid. + * @throws IllegalArgumentException if {@code profile} is {@code null} + * @throws java.awt.color.CMMException if {@code profile} is invalid. + */ + public static ICC_Profile validateProfile(final ICC_Profile profile) { + createColorSpace(profile); // Creating a color space will fail if the profile is bad + + return profile; + } + /** * Returns the color space specified by the given color space constant. *

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 2204e8af..16723bbb 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 @@ -409,6 +409,7 @@ public class JPEGImageReader extends ImageReaderBase { if (DEBUG) { System.err.println("Converting from " + intendedCS + " to " + (image.getColorModel().getColorSpace().isCS_sRGB() ? "sRGB" : image.getColorModel().getColorSpace())); } + convert = new ColorConvertOp(intendedCS, image.getColorModel().getColorSpace(), null); } // Else, pass through with no conversion @@ -858,7 +859,7 @@ public class JPEGImageReader extends ImageReaderBase { return null; } - return readICCProfileSafe(stream); + return readICCProfileSafe(stream, allowBadIndexes); } else if (!segments.isEmpty()) { // NOTE: This is probably over-complicated, as I've never encountered ICC_PROFILE chunks out of order... @@ -905,15 +906,17 @@ public class JPEGImageReader extends ImageReaderBase { streams[badICC ? i : chunkNumber - 1] = stream; } - return readICCProfileSafe(new SequenceInputStream(Collections.enumeration(Arrays.asList(streams)))); + return readICCProfileSafe(new SequenceInputStream(Collections.enumeration(Arrays.asList(streams))), allowBadIndexes); } return null; } - private ICC_Profile readICCProfileSafe(final InputStream stream) throws IOException { + private ICC_Profile readICCProfileSafe(final InputStream stream, final boolean allowBadProfile) throws IOException { try { - return ICC_Profile.getInstance(stream); + ICC_Profile profile = ICC_Profile.getInstance(stream); + + return allowBadProfile ? profile : ColorSpaces.validateProfile(profile); } catch (RuntimeException e) { // NOTE: Throws either IllegalArgumentException or CMMException, depending on platform. @@ -1306,6 +1309,8 @@ public class JPEGImageReader extends ImageReaderBase { int subX = 1; int subY = 1; + int xOff = 0; + int yOff = 0; Rectangle roi = null; boolean metadata = false; boolean thumbnails = false; @@ -1318,8 +1323,16 @@ public class JPEGImageReader extends ImageReaderBase { String[] sub = args[++argIdx].split(","); try { - subX = Integer.parseInt(sub[0]); - subY = sub.length > 1 ? Integer.parseInt(sub[1]) : subX; + if (sub.length >= 4) { + subX = Integer.parseInt(sub[0]); + subY = Integer.parseInt(sub[1]); + xOff = Integer.parseInt(sub[2]); + yOff = Integer.parseInt(sub[3]); + } + else { + subX = Integer.parseInt(sub[0]); + subY = sub.length > 1 ? Integer.parseInt(sub[1]) : subX; + } } catch (NumberFormatException e) { System.err.println("Bad sub sampling (x,y): '" + args[argIdx] + "'"); @@ -1423,7 +1436,7 @@ public class JPEGImageReader extends ImageReaderBase { BufferedImage image; ImageReadParam param = reader.getDefaultReadParam(); if (subX > 1 || subY > 1 || roi != null) { - param.setSourceSubsampling(subX, subY, 0, 0); + param.setSourceSubsampling(subX, subY, xOff, yOff); param.setSourceRegion(roi); image = reader.getImageTypes(0).next().createBufferedImage((reader.getWidth(0) + subX - 1)/ subX, (reader.getHeight(0) + subY - 1) / subY); diff --git a/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReaderTest.java b/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReaderTest.java index ee3dd3c6..63f982b3 100644 --- a/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReaderTest.java +++ b/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReaderTest.java @@ -86,6 +86,7 @@ public class JPEGImageReaderTest extends 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

_YnsPvV6=eJ=Q% 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
r*+}AJ4&|v_^589KzoJK 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 LA<42g2)h5-PZ1wx literal 0 HcmV?d00001 From f6d5a606009b1c9bbdd2d130444d5970fd14345c Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Fri, 5 Jun 2015 10:49:31 +0200 Subject: [PATCH 044/182] TMI-136: Added abstract MetadataWriter, along with preliminary IPTCWriter + test cases. Retrofit EXIFWriter. Loads of small changes and clean-up. --- .../imageio/metadata/MetadataWriter.java | 15 ++ .../imageio/metadata/exif/EXIFEntry.java | 4 +- .../imageio/metadata/exif/EXIFWriter.java | 4 +- .../imageio/metadata/exif/TIFF.java | 12 ++ .../imageio/metadata/iptc/IPTC.java | 130 +++++++++++------- .../imageio/metadata/iptc/IPTCDirectory.java | 1 + .../imageio/metadata/iptc/IPTCEntry.java | 24 ++++ .../imageio/metadata/iptc/IPTCReader.java | 84 +++++++---- .../imageio/metadata/iptc/IPTCWriter.java | 61 ++++++++ .../imageio/metadata/psd/PSDEntry.java | 3 +- .../imageio/metadata/psd/PSDReader.java | 2 +- .../metadata/MetadataReaderAbstractTest.java | 2 +- .../metadata/MetadataWriterAbstractTest.java | 79 +++++++++++ .../imageio/metadata/exif/EXIFWriterTest.java | 35 ++--- .../imageio/metadata/iptc/IPTCWriterTest.java | 72 ++++++++++ 15 files changed, 415 insertions(+), 113 deletions(-) create mode 100644 imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/MetadataWriter.java create mode 100644 imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/iptc/IPTCWriter.java create mode 100644 imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/MetadataWriterAbstractTest.java create mode 100644 imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/iptc/IPTCWriterTest.java diff --git a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/MetadataWriter.java b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/MetadataWriter.java new file mode 100644 index 00000000..325fbdad --- /dev/null +++ b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/MetadataWriter.java @@ -0,0 +1,15 @@ +package com.twelvemonkeys.imageio.metadata; + +import javax.imageio.stream.ImageOutputStream; +import java.io.IOException; + +/** + * MetadataWriter. + * + * @author
Harald Kuhr + * @author last modified by $Author: harald.kuhr$ + * @version $Id: MetadataWriter.java,v 1.0 28/05/15 harald.kuhr Exp$ + */ +public abstract class MetadataWriter { + abstract public boolean write(Directory directory, ImageOutputStream stream) throws IOException; +} diff --git a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/EXIFEntry.java b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/EXIFEntry.java index 381c0913..dfe40b72 100644 --- a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/EXIFEntry.java +++ b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/EXIFEntry.java @@ -71,6 +71,8 @@ final class EXIFEntry extends AbstractEntry { return "IPTC"; case TIFF.TAG_PHOTOSHOP: return "Adobe"; + case TIFF.TAG_PHOTOSHOP_IMAGE_SOURCE_DATA: + return "ImageSourceData"; case TIFF.TAG_ICC_PROFILE: return "ICCProfile"; @@ -189,7 +191,7 @@ final class EXIFEntry extends AbstractEntry { case EXIF.TAG_WHITE_BALANCE: return "WhiteBalance"; case EXIF.TAG_DIGITAL_ZOOM_RATIO: - return "DigitalZoomRation"; + return "DigitalZoomRatio"; case EXIF.TAG_FOCAL_LENGTH_IN_35_MM_FILM: return "FocalLengthIn35mmFilm"; case EXIF.TAG_SCENE_CAPTURE_TYPE: diff --git a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/EXIFWriter.java b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/EXIFWriter.java index 1983ac04..558a8d63 100644 --- a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/EXIFWriter.java +++ b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/EXIFWriter.java @@ -31,6 +31,7 @@ package com.twelvemonkeys.imageio.metadata.exif; import com.twelvemonkeys.imageio.metadata.CompoundDirectory; import com.twelvemonkeys.imageio.metadata.Directory; import com.twelvemonkeys.imageio.metadata.Entry; +import com.twelvemonkeys.imageio.metadata.MetadataWriter; import com.twelvemonkeys.lang.Validate; import javax.imageio.IIOException; @@ -48,7 +49,7 @@ import java.util.*; * @author last modified by $Author: haraldk$ * @version $Id: EXIFWriter.java,v 1.0 17.07.13 10:20 haraldk Exp$ */ -public class EXIFWriter { +public final class EXIFWriter extends MetadataWriter { static final int WORD_LENGTH = 2; static final int LONGWORD_LENGTH = 4; @@ -58,6 +59,7 @@ public class EXIFWriter { return write(new IFD(entries), stream); } + @Override public boolean write(final Directory directory, final ImageOutputStream stream) throws IOException { Validate.notNull(directory); Validate.notNull(stream); diff --git a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/TIFF.java b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/TIFF.java index d169e690..daea665f 100644 --- a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/TIFF.java +++ b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/TIFF.java @@ -184,6 +184,18 @@ public interface TIFF { */ int TAG_PHOTOSHOP = 34377; + /** + * Photoshop layer and mask information (byte order follows TIFF container). + * Layer and mask information found in a typical layered Photoshop file. + * Starts with a character string of "Adobe Photoshop Document Data Block" + * (or "Adobe Photoshop Document Data V0002" for PSB) + * including the null termination character. + * @see com.twelvemonkeys.imageio.metadata.psd.PSD + */ + int TAG_PHOTOSHOP_IMAGE_SOURCE_DATA = 37724; + + int TAG_PHOTOSHOP_ANNOTATIONS = 50255; + /** * ICC Color Profile. * @see java.awt.color.ICC_Profile diff --git a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/iptc/IPTC.java b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/iptc/IPTC.java index a149aa80..adee2645 100644 --- a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/iptc/IPTC.java +++ b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/iptc/IPTC.java @@ -36,110 +36,115 @@ package com.twelvemonkeys.imageio.metadata.iptc; * @version $Id: IPTC.java,v 1.0 Nov 11, 2009 6:20:21 PM haraldk Exp$ */ public interface IPTC { - static final int ENVELOPE_RECORD = 1 << 8; - static final int APPLICATION_RECORD = 2 << 8; + int ENVELOPE_RECORD = 1 << 8; + int APPLICATION_RECORD = 2 << 8; - static final int TAG_CODED_CHARACTER_SET = ENVELOPE_RECORD | 90; + /** 1:05: Destination */ + int TAG_DESTINATION = ENVELOPE_RECORD | 5; + /** 1:50: Product ID */ + int TAG_PRODUCT_ID = ENVELOPE_RECORD | 50; + /** 1:90: Coded Character Set */ + int TAG_CODED_CHARACTER_SET = ENVELOPE_RECORD | 90; /** 2:00 Record Version (mandatory) */ - public static final int TAG_RECORD_VERSION = APPLICATION_RECORD; // 0x0200 + int TAG_RECORD_VERSION = APPLICATION_RECORD; // 0x0200 /** 2:03 Object Type Reference */ - public static final int TAG_OBJECT_TYPE_REFERENCE = APPLICATION_RECORD | 3; + int TAG_OBJECT_TYPE_REFERENCE = APPLICATION_RECORD | 3; /** 2:04 Object Attribute Reference (repeatable) */ - public static final int TAG_OBJECT_ATTRIBUTE_REFERENCE = APPLICATION_RECORD | 4; + int TAG_OBJECT_ATTRIBUTE_REFERENCE = APPLICATION_RECORD | 4; /** 2:05 Object Name */ - public static final int TAG_OBJECT_NAME = APPLICATION_RECORD | 5; // 0x0205 + int TAG_OBJECT_NAME = APPLICATION_RECORD | 5; // 0x0205 /** 2:07 Edit Status */ - public static final int TAG_EDIT_STATUS = APPLICATION_RECORD | 7; + int TAG_EDIT_STATUS = APPLICATION_RECORD | 7; /** 2:08 Editorial Update */ - public static final int TAG_EDITORIAL_UPDATE = APPLICATION_RECORD | 8; + int TAG_EDITORIAL_UPDATE = APPLICATION_RECORD | 8; /** 2:10 Urgency */ - public static final int TAG_URGENCY = APPLICATION_RECORD | 10; + int TAG_URGENCY = APPLICATION_RECORD | 10; /** 2:12 Subect Reference (repeatable) */ - public static final int TAG_SUBJECT_REFERENCE = APPLICATION_RECORD | 12; + int TAG_SUBJECT_REFERENCE = APPLICATION_RECORD | 12; /** 2:15 Category */ - public static final int TAG_CATEGORY = APPLICATION_RECORD | 15; // 0x020f + int TAG_CATEGORY = APPLICATION_RECORD | 15; // 0x020f /** 2:20 Supplemental Category (repeatable) */ - public static final int TAG_SUPPLEMENTAL_CATEGORIES = APPLICATION_RECORD | 20; + int TAG_SUPPLEMENTAL_CATEGORIES = APPLICATION_RECORD | 20; /** 2:22 Fixture Identifier */ - public static final int TAG_FIXTURE_IDENTIFIER = APPLICATION_RECORD | 22; + int TAG_FIXTURE_IDENTIFIER = APPLICATION_RECORD | 22; /** 2:25 Keywords (repeatable) */ - public static final int TAG_KEYWORDS = APPLICATION_RECORD | 25; + int TAG_KEYWORDS = APPLICATION_RECORD | 25; /** 2:26 Content Locataion Code (repeatable) */ - public static final int TAG_CONTENT_LOCATION_CODE = APPLICATION_RECORD | 26; + int TAG_CONTENT_LOCATION_CODE = APPLICATION_RECORD | 26; /** 2:27 Content Locataion Name (repeatable) */ - public static final int TAG_CONTENT_LOCATION_NAME = APPLICATION_RECORD | 27; + int TAG_CONTENT_LOCATION_NAME = APPLICATION_RECORD | 27; /** 2:30 Release Date */ - public static final int TAG_RELEASE_DATE = APPLICATION_RECORD | 30; + int TAG_RELEASE_DATE = APPLICATION_RECORD | 30; /** 2:35 Release Time */ - public static final int TAG_RELEASE_TIME = APPLICATION_RECORD | 35; + int TAG_RELEASE_TIME = APPLICATION_RECORD | 35; /** 2:37 Expiration Date */ - public static final int TAG_EXPIRATION_DATE = APPLICATION_RECORD | 37; + int TAG_EXPIRATION_DATE = APPLICATION_RECORD | 37; /** 2:38 Expiration Time */ - public static final int TAG_EXPIRATION_TIME = APPLICATION_RECORD | 38; + int TAG_EXPIRATION_TIME = APPLICATION_RECORD | 38; /** 2:40 Special Instructions */ - public static final int TAG_SPECIAL_INSTRUCTIONS = APPLICATION_RECORD | 40; // 0x0228 + int TAG_SPECIAL_INSTRUCTIONS = APPLICATION_RECORD | 40; // 0x0228 /** 2:42 Action Advised (1: Kill, 2: Replace, 3: Append, 4: Reference) */ - public static final int TAG_ACTION_ADVICED = APPLICATION_RECORD | 42; + int TAG_ACTION_ADVICED = APPLICATION_RECORD | 42; /** 2:45 Reference Service (repeatable in triplets with 2:47 and 2:50) */ - public static final int TAG_REFERENCE_SERVICE = APPLICATION_RECORD | 45; + int TAG_REFERENCE_SERVICE = APPLICATION_RECORD | 45; /** 2:47 Reference Date (mandatory if 2:45 present) */ - public static final int TAG_REFERENCE_DATE = APPLICATION_RECORD | 47; + int TAG_REFERENCE_DATE = APPLICATION_RECORD | 47; /** 2:50 Reference Number (mandatory if 2:45 present) */ - public static final int TAG_REFERENCE_NUMBER = APPLICATION_RECORD | 50; + int TAG_REFERENCE_NUMBER = APPLICATION_RECORD | 50; /** 2:55 Date Created */ - public static final int TAG_DATE_CREATED = APPLICATION_RECORD | 55; // 0x0237 + int TAG_DATE_CREATED = APPLICATION_RECORD | 55; // 0x0237 /** 2:60 Time Created */ - public static final int TAG_TIME_CREATED = APPLICATION_RECORD | 60; + int TAG_TIME_CREATED = APPLICATION_RECORD | 60; /** 2:62 Digital Creation Date */ - public static final int TAG_DIGITAL_CREATION_DATE = APPLICATION_RECORD | 62; + int TAG_DIGITAL_CREATION_DATE = APPLICATION_RECORD | 62; /** 2:63 Digital Creation Date */ - public static final int TAG_DIGITAL_CREATION_TIME = APPLICATION_RECORD | 63; + int TAG_DIGITAL_CREATION_TIME = APPLICATION_RECORD | 63; /** 2:65 Originating Program */ - public static final int TAG_ORIGINATING_PROGRAM = APPLICATION_RECORD | 65; + int TAG_ORIGINATING_PROGRAM = APPLICATION_RECORD | 65; /** 2:70 Program Version (only valid if 2:65 present) */ - public static final int TAG_PROGRAM_VERSION = APPLICATION_RECORD | 70; + int TAG_PROGRAM_VERSION = APPLICATION_RECORD | 70; /** 2:75 Object Cycle (a: morning, p: evening, b: both) */ - public static final int TAG_OBJECT_CYCLE = APPLICATION_RECORD | 75; + int TAG_OBJECT_CYCLE = APPLICATION_RECORD | 75; /** 2:80 By-line (repeatable) */ - public static final int TAG_BY_LINE = APPLICATION_RECORD | 80; // 0x0250 + int TAG_BY_LINE = APPLICATION_RECORD | 80; // 0x0250 /** 2:85 By-line Title (repeatable) */ - public static final int TAG_BY_LINE_TITLE = APPLICATION_RECORD | 85; // 0x0255 + int TAG_BY_LINE_TITLE = APPLICATION_RECORD | 85; // 0x0255 /** 2:90 City */ - public static final int TAG_CITY = APPLICATION_RECORD | 90; // 0x025a + int TAG_CITY = APPLICATION_RECORD | 90; // 0x025a /** 2:92 Sub-location */ - public static final int TAG_SUB_LOCATION = APPLICATION_RECORD | 92; + int TAG_SUB_LOCATION = APPLICATION_RECORD | 92; /** 2:95 Province/State */ - public static final int TAG_PROVINCE_OR_STATE = APPLICATION_RECORD | 95; // 0x025f + int TAG_PROVINCE_OR_STATE = APPLICATION_RECORD | 95; // 0x025f /** 2:100 Country/Primary Location Code */ - public static final int TAG_COUNTRY_OR_PRIMARY_LOCATION_CODE = APPLICATION_RECORD | 100; + int TAG_COUNTRY_OR_PRIMARY_LOCATION_CODE = APPLICATION_RECORD | 100; /** 2:101 Country/Primary Location Name */ - public static final int TAG_COUNTRY_OR_PRIMARY_LOCATION = APPLICATION_RECORD | 101; // 0x0265 + int TAG_COUNTRY_OR_PRIMARY_LOCATION = APPLICATION_RECORD | 101; // 0x0265 /** 2:103 Original Transmission Reference */ - public static final int TAG_ORIGINAL_TRANSMISSION_REFERENCE = APPLICATION_RECORD | 103; // 0x0267 + int TAG_ORIGINAL_TRANSMISSION_REFERENCE = APPLICATION_RECORD | 103; // 0x0267 /** 2:105 Headline */ - public static final int TAG_HEADLINE = APPLICATION_RECORD | 105; // 0x0269 + int TAG_HEADLINE = APPLICATION_RECORD | 105; // 0x0269 /** 2:110 Credit */ - public static final int TAG_CREDIT = APPLICATION_RECORD | 110; // 0x026e + int TAG_CREDIT = APPLICATION_RECORD | 110; // 0x026e /** 2:115 Source */ - public static final int TAG_SOURCE = APPLICATION_RECORD | 115; // 0x0273 + int TAG_SOURCE = APPLICATION_RECORD | 115; // 0x0273 /** 2:116 Copyright Notice */ - public static final int TAG_COPYRIGHT_NOTICE = APPLICATION_RECORD | 116; // 0x0274 + int TAG_COPYRIGHT_NOTICE = APPLICATION_RECORD | 116; // 0x0274 /** 2:118 Contact */ - public static final int TAG_CONTACT = APPLICATION_RECORD | 118; + int TAG_CONTACT = APPLICATION_RECORD | 118; /** 2:120 Catption/Abstract */ - public static final int TAG_CAPTION = APPLICATION_RECORD | 120; // 0x0278 + int TAG_CAPTION = APPLICATION_RECORD | 120; // 0x0278 /** 2:122 Writer/Editor (repeatable) */ - public static final int TAG_WRITER = APPLICATION_RECORD | 122; // 0x027a + int TAG_WRITER = APPLICATION_RECORD | 122; // 0x027a /** 2:125 Rasterized Caption (binary data) */ - public static final int TAG_RASTERIZED_CATPTION = APPLICATION_RECORD | 125; + int TAG_RASTERIZED_CATPTION = APPLICATION_RECORD | 125; /** 2:130 Image Type */ - public static final int TAG_IMAGE_TYPE = APPLICATION_RECORD | 130; + int TAG_IMAGE_TYPE = APPLICATION_RECORD | 130; /** 2:131 Image Orientation */ - public static final int TAG_IMAGE_ORIENTATION = APPLICATION_RECORD | 131; + int TAG_IMAGE_ORIENTATION = APPLICATION_RECORD | 131; /** 2:135 Language Identifier */ - public static final int TAG_LANGUAGE_IDENTIFIER = APPLICATION_RECORD | 135; + int TAG_LANGUAGE_IDENTIFIER = APPLICATION_RECORD | 135; // TODO: 2:150-2:154 Audio @@ -150,9 +155,28 @@ public interface IPTC { * * @see JobMinder Homepage */ - static final int CUSTOM_TAG_JOBMINDER_ASSIGNMENT_DATA = APPLICATION_RECORD | 199; + int CUSTOM_TAG_JOBMINDER_ASSIGNMENT_DATA = APPLICATION_RECORD | 199; // TODO: Other custom fields in 155-200 range? // TODO: 2:200-2:202 Object Preview Data + + final class Tags { + static boolean isArray(final short tagId) { + switch (tagId) { + case IPTC.TAG_DESTINATION: + case IPTC.TAG_PRODUCT_ID: + case IPTC.TAG_SUBJECT_REFERENCE: + case IPTC.TAG_SUPPLEMENTAL_CATEGORIES: + case IPTC.TAG_KEYWORDS: + case IPTC.TAG_CONTENT_LOCATION_CODE: + case IPTC.TAG_CONTENT_LOCATION_NAME: + case IPTC.TAG_BY_LINE: + return true; + + default: + return false; + } + } + } } diff --git a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/iptc/IPTCDirectory.java b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/iptc/IPTCDirectory.java index 133f07bc..54a644ca 100644 --- a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/iptc/IPTCDirectory.java +++ b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/iptc/IPTCDirectory.java @@ -42,6 +42,7 @@ import java.util.Collection; */ final class IPTCDirectory extends AbstractDirectory { IPTCDirectory(final Collection entries) { + // TODO: Normalize multiple entries with same key to single entry w/array super(entries); } } \ No newline at end of file diff --git a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/iptc/IPTCEntry.java b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/iptc/IPTCEntry.java index 6bca3f91..956b6ac1 100644 --- a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/iptc/IPTCEntry.java +++ b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/iptc/IPTCEntry.java @@ -47,6 +47,30 @@ class IPTCEntry extends AbstractEntry { switch ((Integer) getIdentifier()) { case IPTC.TAG_RECORD_VERSION: return "RecordVersion"; + case IPTC.TAG_KEYWORDS: + return "Keywords"; + case IPTC.TAG_SPECIAL_INSTRUCTIONS: + return "Instructions"; + case IPTC.TAG_DIGITAL_CREATION_DATE: + return "DigitalCreationDate"; + case IPTC.TAG_DIGITAL_CREATION_TIME: + return "DigitalCreationTime"; + case IPTC.TAG_DATE_CREATED: + return "DateCreated"; + case IPTC.TAG_TIME_CREATED: + return "TimeCreated"; + case IPTC.TAG_BY_LINE_TITLE: + return "ByLineTitle"; + case IPTC.TAG_CITY: + return "City"; + case IPTC.TAG_SUB_LOCATION: + return "SubLocation"; + case IPTC.TAG_PROVINCE_OR_STATE: + return "StateProvince"; + case IPTC.TAG_COUNTRY_OR_PRIMARY_LOCATION_CODE: + return "CountryCode"; + case IPTC.TAG_COUNTRY_OR_PRIMARY_LOCATION: + return "Country"; case IPTC.TAG_SOURCE: return "Source"; case IPTC.TAG_CAPTION: diff --git a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/iptc/IPTCReader.java b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/iptc/IPTCReader.java index a9fad969..34a8f1a5 100644 --- a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/iptc/IPTCReader.java +++ b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/iptc/IPTCReader.java @@ -43,8 +43,9 @@ import java.nio.charset.CharacterCodingException; import java.nio.charset.Charset; import java.nio.charset.CharsetDecoder; import java.nio.charset.CodingErrorAction; -import java.util.ArrayList; -import java.util.List; +import java.util.Arrays; +import java.util.LinkedHashMap; +import java.util.Map; /** * IPTCReader @@ -60,61 +61,88 @@ public final class IPTCReader extends MetadataReader { private int encoding = ENCODING_UNSPECIFIED; - @Override public Directory read(final ImageInputStream input) throws IOException { Validate.notNull(input, "input"); - List entries = new ArrayList(); + Map entries = new LinkedHashMap<>(); // 0x1c identifies start of a tag while (input.read() == 0x1c) { short tagId = input.readShort(); int tagByteCount = input.readUnsignedShort(); - Entry entry = readEntry(input, tagId, tagByteCount); + + boolean array = IPTC.Tags.isArray(tagId); + Entry entry = readEntry(input, tagId, tagByteCount, array, array ? entries.get(tagId) : null); if (entry != null) { - entries.add(entry); + entries.put(tagId, entry); } } - return new IPTCDirectory(entries); + return new IPTCDirectory(entries.values()); } - private IPTCEntry readEntry(final ImageInputStream pInput, final short pTagId, final int pLength) throws IOException { - Object value = null; + private IPTCEntry mergeEntries(final short tagId, final Object newValue, final Entry oldEntry) { + Object[] oldValue = oldEntry != null ? (Object[]) oldEntry.getValue() : null; + Object[] value; + + if (newValue instanceof String) { + if (oldValue == null) { + value = new String[] {(String) newValue}; + } + else { + String[] array = (String[]) oldValue; + value = Arrays.copyOf(array, array.length + 1); + value[value.length - 1] = newValue; + } + } + else { + if (oldValue == null) { + value = new Object[] {newValue}; + } + else { + value = Arrays.copyOf(oldValue, oldValue.length + 1); + value [value .length - 1] = newValue; + } + } + + return new IPTCEntry(tagId, value); + } + + private IPTCEntry readEntry(final ImageInputStream pInput, final short pTagId, final int pLength, final boolean array, final Entry oldEntry) throws IOException { + Object value; switch (pTagId) { case IPTC.TAG_CODED_CHARACTER_SET: // TODO: Mapping from ISO 646 to Java supported character sets? - // TODO: Move somewhere else? encoding = parseEncoding(pInput, pLength); return null; case IPTC.TAG_RECORD_VERSION: + // TODO: Assert length == 2? // A single unsigned short value value = pInput.readUnsignedShort(); break; default: - // Skip non-Application fields, as they are typically not human readable - if ((pTagId & 0xff00) != IPTC.APPLICATION_RECORD) { - pInput.skipBytes(pLength); - return null; + // TODO: Create Tags.getType(tag), to allow for more flexible types + if ((pTagId & 0xff00) == IPTC.APPLICATION_RECORD) { + // Treat Application records as Strings + if (pLength < 1) { + value = null; + } + else { + value = parseString(pInput, pLength); + } + } + else { + // Non-Application fields, typically not human readable + byte[] data = new byte[pLength]; + pInput.readFully(data); + value = data; } - - // fall through } - // If we don't have a value, treat it as a string - if (value == null) { - if (pLength < 1) { - value = null; - } - else { - value = parseString(pInput, pLength); - } - } - - return new IPTCEntry(pTagId, value); + return array ? mergeEntries(pTagId, value, oldEntry) : new IPTCEntry(pTagId, value); } private int parseEncoding(final ImageInputStream pInput, int tagByteCount) throws IOException { @@ -148,7 +176,7 @@ public final class IPTCReader extends MetadataReader { } // Fall back to use ISO-8859-1 - // This will not fail, but may may create wrong fallback-characters + // This will not fail, but may create wrong fallback-characters return StringUtil.decode(data, 0, data.length, "ISO8859_1"); } } diff --git a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/iptc/IPTCWriter.java b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/iptc/IPTCWriter.java new file mode 100644 index 00000000..88a1c6b5 --- /dev/null +++ b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/iptc/IPTCWriter.java @@ -0,0 +1,61 @@ +package com.twelvemonkeys.imageio.metadata.iptc; + +import com.twelvemonkeys.imageio.metadata.Directory; +import com.twelvemonkeys.imageio.metadata.Entry; +import com.twelvemonkeys.imageio.metadata.MetadataWriter; + +import javax.imageio.stream.ImageOutputStream; +import java.io.IOException; +import java.nio.charset.StandardCharsets; + +import static com.twelvemonkeys.lang.Validate.notNull; + +/** + * IPTCWriter. + * + * @author Harald Kuhr + * @author last modified by $Author: harald.kuhr$ + * @version $Id: IPTCWriter.java,v 1.0 28/05/15 harald.kuhr Exp$ + */ +public final class IPTCWriter extends MetadataWriter { + @Override + public boolean write(final Directory directory, final ImageOutputStream stream) throws IOException { + notNull(directory, "directory"); + notNull(stream, "stream"); + + for (Entry entry : directory) { + int tag = (Integer) entry.getIdentifier(); + Object value = entry.getValue(); + + if (IPTC.Tags.isArray((short) tag)) { + Object[] values = (Object[]) value; + + for (Object v : values) { + stream.write(0x1c); + stream.writeShort(tag); + writeValue(stream, v); + } + } + else { + stream.write(0x1c); + stream.writeShort(tag); + writeValue(stream, value); + } + } + + return false; + } + + private void writeValue(final ImageOutputStream stream, final Object value) throws IOException { + if (value instanceof String) { + byte[] data = ((String) value).getBytes(StandardCharsets.UTF_8); + stream.writeShort(data.length); + stream.write(data); + } + else if (value instanceof Integer) { + // TODO: Need to know types from tag + stream.writeShort(2); + stream.writeShort((Integer) value); + } + } +} diff --git a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/psd/PSDEntry.java b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/psd/PSDEntry.java index b89d4eb4..f07a4453 100644 --- a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/psd/PSDEntry.java +++ b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/psd/PSDEntry.java @@ -66,7 +66,8 @@ class PSDEntry extends AbstractEntry { field.setAccessible(true); if (field.get(null).equals(getIdentifier())) { - return StringUtil.lispToCamel(field.getName().substring(4).replace("_", "-").toLowerCase(), true); + String fieldName = StringUtil.lispToCamel(field.getName().substring(4).replace("_", "-").toLowerCase(), true); + return name != null ? fieldName + ": " + name : fieldName; } } } diff --git a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/psd/PSDReader.java b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/psd/PSDReader.java index f6e67a46..a8904a50 100755 --- a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/psd/PSDReader.java +++ b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/psd/PSDReader.java @@ -59,7 +59,7 @@ public final class PSDReader extends MetadataReader { public Directory read(final ImageInputStream input) throws IOException { Validate.notNull(input, "input"); - List entries = new ArrayList(); + List entries = new ArrayList<>(); while (true) { try { diff --git a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/MetadataReaderAbstractTest.java b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/MetadataReaderAbstractTest.java index 189d6c28..24c36fa7 100644 --- a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/MetadataReaderAbstractTest.java +++ b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/MetadataReaderAbstractTest.java @@ -79,7 +79,7 @@ public abstract class MetadataReaderAbstractTest { assertNotNull(directory); } - protected final Matcher hasValue(final Object value) { + protected static Matcher hasValue(final Object value) { return new EntryHasValue(value); } diff --git a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/MetadataWriterAbstractTest.java b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/MetadataWriterAbstractTest.java new file mode 100644 index 00000000..845ebc97 --- /dev/null +++ b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/MetadataWriterAbstractTest.java @@ -0,0 +1,79 @@ +/* + * Copyright (c) 2012, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name "TwelveMonkeys" nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.twelvemonkeys.imageio.metadata; + +import com.twelvemonkeys.imageio.stream.URLImageInputStreamSpi; +import org.junit.Test; + +import javax.imageio.ImageIO; +import javax.imageio.spi.IIORegistry; +import javax.imageio.stream.ImageInputStream; +import javax.imageio.stream.MemoryCacheImageOutputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.net.URL; +import java.util.ArrayList; + +/** + * ReaderAbstractTest + * + * @author Harald Kuhr + * @author last modified by $Author: haraldk$ + * @version $Id: ReaderAbstractTest.java,v 1.0 04.01.12 09:40 haraldk Exp$ + */ +public abstract class MetadataWriterAbstractTest { + static { + IIORegistry.getDefaultInstance().registerServiceProvider(new URLImageInputStreamSpi()); + ImageIO.setUseCache(false); + } + + protected final URL getResource(final String name) throws IOException { + return getClass().getResource(name); + } + + protected final ImageInputStream getDataAsIIS() throws IOException { + return ImageIO.createImageInputStream(getData()); + } + + protected abstract InputStream getData() throws IOException; + + protected abstract MetadataWriter createWriter(); + + @Test(expected = IllegalArgumentException.class) + public void testWriteNullDirectory() throws IOException { + createWriter().write(null, new MemoryCacheImageOutputStream(new ByteArrayOutputStream())); + } + + @Test(expected = IllegalArgumentException.class) + public void testWriteNullStream() throws IOException { + createWriter().write(new AbstractDirectory(new ArrayList()) { + }, null); + } +} diff --git a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/exif/EXIFWriterTest.java b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/exif/EXIFWriterTest.java index a425a7c7..f682fd00 100644 --- a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/exif/EXIFWriterTest.java +++ b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/exif/EXIFWriterTest.java @@ -28,24 +28,17 @@ package com.twelvemonkeys.imageio.metadata.exif; -import com.twelvemonkeys.imageio.metadata.AbstractDirectory; -import com.twelvemonkeys.imageio.metadata.AbstractEntry; -import com.twelvemonkeys.imageio.metadata.Directory; -import com.twelvemonkeys.imageio.metadata.Entry; +import com.twelvemonkeys.imageio.metadata.*; import com.twelvemonkeys.imageio.stream.ByteArrayImageInputStream; -import com.twelvemonkeys.imageio.stream.URLImageInputStreamSpi; import com.twelvemonkeys.io.FastByteArrayOutputStream; import org.junit.Test; import javax.imageio.ImageIO; -import javax.imageio.spi.IIORegistry; -import javax.imageio.stream.ImageInputStream; import javax.imageio.stream.ImageOutputStream; import javax.imageio.stream.ImageOutputStreamImpl; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; -import java.net.URL; import java.nio.ByteOrder; import java.util.ArrayList; import java.util.Collections; @@ -61,37 +54,25 @@ import static org.junit.Assert.assertNotNull; * @author last modified by $Author: haraldk$ * @version $Id: EXIFWriterTest.java,v 1.0 18.07.13 09:53 haraldk Exp$ */ -public class EXIFWriterTest { - static { - IIORegistry.getDefaultInstance().registerServiceProvider(new URLImageInputStreamSpi()); - ImageIO.setUseCache(false); - } +public class EXIFWriterTest extends MetadataWriterAbstractTest { - protected final URL getResource(final String name) throws IOException { - return getClass().getResource(name); - } - - protected final ImageInputStream getDataAsIIS() throws IOException { - return ImageIO.createImageInputStream(getData()); - } - - // @Override + @Override protected InputStream getData() throws IOException { return getResource("/exif/exif-jpeg-segment.bin").openStream(); } -// @Override protected EXIFReader createReader() { return new EXIFReader(); } + @Override protected EXIFWriter createWriter() { return new EXIFWriter(); } @Test public void testWriteReadSimple() throws IOException { - ArrayList entries = new ArrayList(); + ArrayList entries = new ArrayList<>(); entries.add(new EXIFEntry(TIFF.TAG_ORIENTATION, 1, TIFF.TYPE_SHORT)); entries.add(new EXIFEntry(TIFF.TAG_IMAGE_WIDTH, 1600, TIFF.TYPE_SHORT)); entries.add(new AbstractEntry(TIFF.TAG_IMAGE_HEIGHT, 900) {}); @@ -139,7 +120,7 @@ public class EXIFWriterTest { @Test public void testWriteMotorola() throws IOException { - ArrayList entries = new ArrayList(); + ArrayList entries = new ArrayList<>(); entries.add(new AbstractEntry(TIFF.TAG_SOFTWARE, "TwelveMonkeys ImageIO") {}); entries.add(new EXIFEntry(TIFF.TAG_IMAGE_WIDTH, Integer.MAX_VALUE, TIFF.TYPE_LONG)); Directory directory = new AbstractDirectory(entries) {}; @@ -174,7 +155,7 @@ public class EXIFWriterTest { @Test public void testWriteIntel() throws IOException { - ArrayList entries = new ArrayList(); + ArrayList entries = new ArrayList<>(); entries.add(new AbstractEntry(TIFF.TAG_SOFTWARE, "TwelveMonkeys ImageIO") {}); entries.add(new EXIFEntry(TIFF.TAG_IMAGE_WIDTH, Integer.MAX_VALUE, TIFF.TYPE_LONG)); Directory directory = new AbstractDirectory(entries) {}; @@ -254,7 +235,7 @@ public class EXIFWriterTest { @Test public void testComputeIFDSize() throws IOException { - ArrayList entries = new ArrayList(); + ArrayList entries = new ArrayList<>(); entries.add(new EXIFEntry(TIFF.TAG_ORIENTATION, 1, TIFF.TYPE_SHORT)); entries.add(new EXIFEntry(TIFF.TAG_IMAGE_WIDTH, 1600, TIFF.TYPE_SHORT)); entries.add(new AbstractEntry(TIFF.TAG_IMAGE_HEIGHT, 900) {}); diff --git a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/iptc/IPTCWriterTest.java b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/iptc/IPTCWriterTest.java new file mode 100644 index 00000000..dd620eae --- /dev/null +++ b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/iptc/IPTCWriterTest.java @@ -0,0 +1,72 @@ +package com.twelvemonkeys.imageio.metadata.iptc; + +import com.twelvemonkeys.imageio.metadata.Directory; +import com.twelvemonkeys.imageio.metadata.MetadataWriter; +import com.twelvemonkeys.imageio.metadata.MetadataWriterAbstractTest; +import com.twelvemonkeys.imageio.stream.ByteArrayImageInputStream; +import org.junit.Test; + +import javax.imageio.stream.MemoryCacheImageOutputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.List; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assume.assumeNotNull; + +/** + * IPTCWriterTest. + * + * @author Harald Kuhr + * @author last modified by $Author: harald.kuhr$ + * @version $Id: IPTCWriterTest.java,v 1.0 05/06/15 harald.kuhr Exp$ + */ +public class IPTCWriterTest extends MetadataWriterAbstractTest { + @Override + protected InputStream getData() throws IOException { + return getResource("/iptc/iptc-jpeg-segment.bin").openStream(); + } + + @Override + protected MetadataWriter createWriter() { + return new IPTCWriter(); + } + + private IPTCReader createReader() { + return new IPTCReader(); + } + + @Test + public void testRewriteExisting() throws IOException { + IPTCReader reader = createReader(); + Directory iptc = reader.read(getDataAsIIS()); + assumeNotNull(iptc); + + ByteArrayOutputStream bytes = new ByteArrayOutputStream(); + MemoryCacheImageOutputStream stream = new MemoryCacheImageOutputStream(bytes); + createWriter().write(iptc, stream); + stream.close(); + + Directory written = reader.read(new ByteArrayImageInputStream(bytes.toByteArray())); + assertEquals(iptc, written); + } + + @Test + public void testWrite() throws IOException { + List entries = new ArrayList<>(); + entries.add(new IPTCEntry(IPTC.TAG_KEYWORDS, new String[] {"Uno", "Due", "Tre"})); + + Directory iptc = new IPTCDirectory(entries); + + ByteArrayOutputStream bytes = new ByteArrayOutputStream(); + MemoryCacheImageOutputStream stream = new MemoryCacheImageOutputStream(bytes); + createWriter().write(iptc, stream); + stream.close(); + + Directory written = createReader().read(new ByteArrayImageInputStream(bytes.toByteArray())); + System.err.println("written: " + written); + assertEquals(iptc, written); + } +} \ No newline at end of file From 194f34894f4aacf0d39732dc2844e1f0405c962b Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Fri, 5 Jun 2015 10:50:16 +0200 Subject: [PATCH 045/182] Added more PSD resource + clean-up. --- .../imageio/plugins/psd/PSD.java | 88 +++++++++++++++++++ .../imageio/plugins/psd/PSDColorData.java | 4 +- 2 files changed, 89 insertions(+), 3 deletions(-) diff --git a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSD.java b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSD.java index b1c0539a..24e3554e 100755 --- a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSD.java +++ b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSD.java @@ -578,6 +578,94 @@ interface PSD { */ int RES_ALTERNATE_SPOT_COLORS = 0x042B; + /** + * (Photoshop CS2) Layer Selection ID(s). + * 2 bytes count, following is repeated for each count: 4 bytes layer ID. + */ + int RES_LAYER_SELECTION_IDS = 0x042D; + + /** + * (Photoshop CS2) HDR Toning information + */ + int RES_HDR_TONING_INFO = 0x042E; + + /** + * (Photoshop CS2) Print info + */ + int RES_PRINT_INFO = 0x042F; + + /** + * (Photoshop CS2) Layer Group(s) Enabled ID. + * 1 byte for each layer in the document, repeated by length of the resource. + * NOTE: Layer groups have start and end markers. + */ + int RES_LAYER_GROUPS_ENABLED = 0x0430; + + /** + * (Photoshop CS3) Color samplers resource. + * Also see ID 1038 for old format. + * See Color samplers resource format. + */ + int RES_COLOR_SAMPLERS_RESOURCE = 0x0431; + + /** + * (Photoshop CS3) Measurement Scale. + * 4 bytes (descriptor version = 16), Descriptor (see Descriptor structure) + */ + int RES_MEASUREMENT_SCALE = 0x0432; + + /** + * (Photoshop CS3) Timeline Information. + * 4 bytes (descriptor version = 16), Descriptor (see Descriptor structure) + */ + int RES_TIMELINE_INFO = 0x0433; + + /** + * (Photoshop CS3) Sheet Disclosure. + * 4 bytes (descriptor version = 16), Descriptor (see See Descriptor structure) + */ + int RES_SHEET_DISCLOSURE = 0x0434; + + /** + * (Photoshop CS3) DisplayInfo structure to support floating point colors. + * Also see ID 1007. See Appendix A in Photoshop API Guide.pdf . + */ + int RES_DISPLAY_INFO_FP = 0x0435; + + /** + * (Photoshop CS3) Onion Skins. + * 4 bytes (descriptor version = 16), Descriptor (see See Descriptor structure) + */ + int RES_ONION_SKINS = 0x0436; + + /** + * (Photoshop CS4) Count Information. + * 4 bytes (descriptor version = 16), Descriptor (see See Descriptor structure). + * Information about the count in the document. See the Count Tool. + */ + int RES_COUNT_INFO = 0x0438; + + /** + * (Photoshop CS5) Print Information. + * 4 bytes (descriptor version = 16), Descriptor (see See Descriptor structure). + * Information about the current print settings in the document. The color management options. + */ + int RES_PRINT_INFO_CMM = 0x043A; + + /** + * (Photoshop CS5) Print Style. + * 4 bytes (descriptor version = 16), Descriptor (see See Descriptor structure). + * Information about the current print style in the document. The printing marks, labels, ornaments, etc. + */ + int RES_PRINT_STYLE = 0x043B; + + /** + * (Photoshop CC) Path Selection State. + * 4 bytes (descriptor version = 16), Descriptor (see See Descriptor structure). + * Information about the current path selection state. + */ + int RES_PATH_SELECTION_STATE = 0x0440; + // 07d0-0bb6 /* Saved path information */ diff --git a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDColorData.java b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDColorData.java index b3f71c20..993929af 100755 --- a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDColorData.java +++ b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDColorData.java @@ -28,8 +28,6 @@ package com.twelvemonkeys.imageio.plugins.psd; -import com.twelvemonkeys.image.InverseColorMapIndexColorModel; - import javax.imageio.IIOException; import javax.imageio.stream.ImageInputStream; import java.awt.image.DataBuffer; @@ -66,7 +64,7 @@ final class PSDColorData { IndexColorModel getIndexColorModel() { if (colorModel == null) { int[] rgb = toInterleavedRGB(colors); - colorModel = new InverseColorMapIndexColorModel(8, rgb.length, rgb, 0, false, -1, DataBuffer.TYPE_BYTE); + colorModel = new IndexColorModel(8, rgb.length, rgb, 0, false, -1, DataBuffer.TYPE_BYTE); } return colorModel; From 821c20c09a7248368b901e5eff6cb15b8cd64d59 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Fri, 5 Jun 2015 10:58:54 +0200 Subject: [PATCH 046/182] TMI-136: Clean-up and added TODOs. --- .../twelvemonkeys/imageio/metadata/iptc/IPTCWriter.java | 8 ++++++++ .../imageio/metadata/iptc/IPTCWriterTest.java | 1 - 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/iptc/IPTCWriter.java b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/iptc/IPTCWriter.java index 88a1c6b5..11904a7f 100644 --- a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/iptc/IPTCWriter.java +++ b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/iptc/IPTCWriter.java @@ -23,6 +23,9 @@ public final class IPTCWriter extends MetadataWriter { notNull(directory, "directory"); notNull(stream, "stream"); + // TODO: Make sure we always write application record version (2.00) + // TODO: Write encoding UTF8? + for (Entry entry : directory) { int tag = (Integer) entry.getIdentifier(); Object value = entry.getValue(); @@ -52,6 +55,11 @@ public final class IPTCWriter extends MetadataWriter { stream.writeShort(data.length); stream.write(data); } + else if (value instanceof byte[]) { + byte[] data = (byte[]) value; + stream.writeShort(data.length); + stream.write(data); + } else if (value instanceof Integer) { // TODO: Need to know types from tag stream.writeShort(2); diff --git a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/iptc/IPTCWriterTest.java b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/iptc/IPTCWriterTest.java index dd620eae..e5f277db 100644 --- a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/iptc/IPTCWriterTest.java +++ b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/iptc/IPTCWriterTest.java @@ -66,7 +66,6 @@ public class IPTCWriterTest extends MetadataWriterAbstractTest { stream.close(); Directory written = createReader().read(new ByteArrayImageInputStream(bytes.toByteArray())); - System.err.println("written: " + written); assertEquals(iptc, written); } } \ No newline at end of file From b2142cb449f6f168459a38f2dfa0441c51636ade Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Fri, 5 Jun 2015 20:11:54 +0200 Subject: [PATCH 047/182] Updated to new format name style. --- README.md | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index eef40696..7c0a0021 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ The goal is to create a set of efficient and robust ImageIO plug-ins, that can b Mainstream format support -#### MS Windows/IBM OS/2 Device Independent Bitmap (BMP) *3.1* +#### BMP - MS Windows/IBM OS/2 Device Independent Bitmap * Read support for all known versions of the DIB/BMP format * Indexed color, 1, 4 and 8 bit, including 4 and 8 bit RLE @@ -67,7 +67,7 @@ without success so far). Alternatively, if you have or know of a JPEG-2000 implementation in Java with a suitable license, get in touch. :-) -#### NetPBM Portable Any Map (PNM) *3.1* +#### PNM - NetPBM Portable Any Map * Read support for the following file types: * PBM in 'P1' (ASCII) and 'P4' (binary) formats, 1 bit per pixel @@ -80,7 +80,7 @@ Alternatively, if you have or know of a JPEG-2000 implementation in Java with a * PAM in 'P7' (binary) format * Standard metadata support -#### Adobe Photoshop Document (PSD) +#### PSD - Adobe Photoshop Document * Read support for the following file types: * Monochrome, 1 channel, 1 bit @@ -100,7 +100,7 @@ Alternatively, if you have or know of a JPEG-2000 implementation in Java with a * Support for "Large Document Format" (PSB) * Native metadata support -#### Aldus/Adobe Tagged Image File Format (TIFF) +#### TIFF - Aldus/Adobe Tagged Image File Format * Read support for the following "Baseline" TIFF file types: * Class B (Bi-level), all relevant compression types, 1 bit per sample @@ -130,7 +130,7 @@ Alternatively, if you have or know of a JPEG-2000 implementation in Java with a Legacy formats -#### Commodore Amiga/Electronic Arts Interchange File Format (IFF) +#### IFF - Commodore Amiga/Electronic Arts Interchange File Format * Legacy format, allows reading popular image format from the Commodore Amiga computer. * Read support for the following file types: @@ -148,7 +148,7 @@ Legacy formats * Uncompressed * RLE (PackBits) -#### ZSoft Paintbrush Format (PCX) *3.1* +#### PCX - ZSoft Paintbrush Format * Read support for the following file types: * Indexed color, 1, 2, 4 or 8 bits per pixel, bit planes or interleaved @@ -160,7 +160,7 @@ Legacy formats * RLE compressed * Standard metadata support -#### Apple Mac Paint Picture Format (PICT) +#### PICT - Apple Mac Paint Picture Format * Legacy format, especially useful for reading OS X clipboard data. * Read support for the following file types: @@ -171,7 +171,7 @@ Legacy formats * Write support for RGB pixel data: * QuickDraw pixmap -#### Silicon Graphics Image Format (SGI) *3.1* +#### SGI - Silicon Graphics Image Format * Read support for the following file types: * 1, 2, 3 or 4 channel image data @@ -181,7 +181,7 @@ Legacy formats * RLE compressed * Standard metadata support -#### Truevision TGA Image Format (TGA) *3.1* +#### TGA - Truevision TGA Image Format * Read support for the following file types: * ColorMapped @@ -194,14 +194,14 @@ Legacy formats Icon/other formats -#### Apple Icon Image (ICNS) +#### ICNS - Apple Icon Image * Read support for the following icon types: * All known "native" icon types * Large PNG encoded icons * Large JPEG 2000 encoded icons (requires JPEG 2000 ImageIO plugin or fallback to `sips` command line tool) -#### MS Windows Icon and Cursor Formats (ICO & CUR) +#### ICO & CUR - MS Windows Icon and Cursor Formats * Read support for the following file types: * ICO Indexed color, 1, 4 and 8 bit @@ -210,17 +210,17 @@ Icon/other formats * CUR RGB, 16, 24 and 32 bit * *3.1* Note: These formats are now part of the BMP plugin -#### MS Windows Thumbs DB (Thumbs.db) +#### Thumbs.db - MS Windows Thumbs DB * Read support Other formats, using 3rd party libraries -#### Scalable Vector Graphics (SVG) +#### SVG - Scalable Vector Graphics * Read-only support using Batik -#### MS Windows MetaFile (WMF) +#### WMF - MS Windows MetaFile * Limited read-only support using Batik From 8052fbc5b88669f4a475d9ef2c7e8274e114fdf7 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Mon, 8 Jun 2015 11:11:45 +0200 Subject: [PATCH 048/182] TMI-142: Added missing resource file, now making sure the TIFFImageWriter is registered. --- .../resources/META-INF/services/javax.imageio.spi.ImageWriterSpi | 1 + 1 file changed, 1 insertion(+) create mode 100755 imageio/imageio-tiff/src/main/resources/META-INF/services/javax.imageio.spi.ImageWriterSpi diff --git a/imageio/imageio-tiff/src/main/resources/META-INF/services/javax.imageio.spi.ImageWriterSpi b/imageio/imageio-tiff/src/main/resources/META-INF/services/javax.imageio.spi.ImageWriterSpi new file mode 100755 index 00000000..208d610d --- /dev/null +++ b/imageio/imageio-tiff/src/main/resources/META-INF/services/javax.imageio.spi.ImageWriterSpi @@ -0,0 +1 @@ +com.twelvemonkeys.imageio.plugins.tiff.TIFFImageWriterSpi From f645e464956a8e18a51e09895fa30f7b06b0eb90 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Mon, 8 Jun 2015 14:12:04 +0200 Subject: [PATCH 049/182] Updated POM to 3.2-SNAPSHOT --- bom/pom.xml | 2 +- common/common-image/pom.xml | 2 +- common/common-io/pom.xml | 2 +- common/common-lang/pom.xml | 2 +- common/pom.xml | 2 +- imageio/imageio-batik/pom.xml | 2 +- imageio/imageio-bmp/pom.xml | 2 +- imageio/imageio-clippath/pom.xml | 2 +- imageio/imageio-core/pom.xml | 2 +- imageio/imageio-icns/pom.xml | 2 +- imageio/imageio-iff/pom.xml | 2 +- imageio/imageio-jpeg/pom.xml | 2 +- imageio/imageio-metadata/pom.xml | 2 +- imageio/imageio-pcx/pom.xml | 2 +- imageio/imageio-pdf/pom.xml | 2 +- imageio/imageio-pict/pom.xml | 2 +- imageio/imageio-pnm/pom.xml | 2 +- imageio/imageio-psd/pom.xml | 2 +- imageio/imageio-reference/pom.xml | 2 +- imageio/imageio-sgi/pom.xml | 2 +- imageio/imageio-tga/pom.xml | 2 +- imageio/imageio-thumbsdb/pom.xml | 2 +- imageio/imageio-tiff/pom.xml | 2 +- servlet/pom.xml | 2 +- 24 files changed, 24 insertions(+), 24 deletions(-) diff --git a/bom/pom.xml b/bom/pom.xml index 5903934e..39c81a74 100644 --- a/bom/pom.xml +++ b/bom/pom.xml @@ -5,7 +5,7 @@ com.twelvemonkeys twelvemonkeys - 3.1.1-SNAPSHOT + 3.2-SNAPSHOT com.twelvemonkeys.bom diff --git a/common/common-image/pom.xml b/common/common-image/pom.xml index b482e576..8ac544da 100644 --- a/common/common-image/pom.xml +++ b/common/common-image/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.common common - 3.1.1-SNAPSHOT + 3.2-SNAPSHOT common-image jar diff --git a/common/common-io/pom.xml b/common/common-io/pom.xml index e86be1ca..c057fcc3 100644 --- a/common/common-io/pom.xml +++ b/common/common-io/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.common common - 3.1.1-SNAPSHOT + 3.2-SNAPSHOT common-io jar diff --git a/common/common-lang/pom.xml b/common/common-lang/pom.xml index 8429ba3f..7628f6a2 100644 --- a/common/common-lang/pom.xml +++ b/common/common-lang/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.common common - 3.1.1-SNAPSHOT + 3.2-SNAPSHOT common-lang jar diff --git a/common/pom.xml b/common/pom.xml index eaf785b2..638c21a4 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys twelvemonkeys - 3.1.1-SNAPSHOT + 3.2-SNAPSHOT com.twelvemonkeys.common common diff --git a/imageio/imageio-batik/pom.xml b/imageio/imageio-batik/pom.xml index 8bb9be37..8f2e40b2 100644 --- a/imageio/imageio-batik/pom.xml +++ b/imageio/imageio-batik/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.1.1-SNAPSHOT + 3.2-SNAPSHOT imageio-batik TwelveMonkeys :: ImageIO :: Batik Plugin diff --git a/imageio/imageio-bmp/pom.xml b/imageio/imageio-bmp/pom.xml index 9f9eb1a5..4fe0c9a7 100644 --- a/imageio/imageio-bmp/pom.xml +++ b/imageio/imageio-bmp/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.1.1-SNAPSHOT + 3.2-SNAPSHOT imageio-bmp TwelveMonkeys :: ImageIO :: BMP plugin diff --git a/imageio/imageio-clippath/pom.xml b/imageio/imageio-clippath/pom.xml index 4a8caac7..0fa5d23d 100755 --- a/imageio/imageio-clippath/pom.xml +++ b/imageio/imageio-clippath/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.1.1-SNAPSHOT + 3.2-SNAPSHOT imageio-clippath TwelveMonkeys :: ImageIO :: Photoshop Path Support diff --git a/imageio/imageio-core/pom.xml b/imageio/imageio-core/pom.xml index ebb2cd28..9634698b 100644 --- a/imageio/imageio-core/pom.xml +++ b/imageio/imageio-core/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.1.1-SNAPSHOT + 3.2-SNAPSHOT imageio-core TwelveMonkeys :: ImageIO :: Core diff --git a/imageio/imageio-icns/pom.xml b/imageio/imageio-icns/pom.xml index bdfb7cab..30899941 100644 --- a/imageio/imageio-icns/pom.xml +++ b/imageio/imageio-icns/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.1.1-SNAPSHOT + 3.2-SNAPSHOT imageio-icns TwelveMonkeys :: ImageIO :: ICNS plugin diff --git a/imageio/imageio-iff/pom.xml b/imageio/imageio-iff/pom.xml index 26bd06ed..5769f1ba 100644 --- a/imageio/imageio-iff/pom.xml +++ b/imageio/imageio-iff/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.1.1-SNAPSHOT + 3.2-SNAPSHOT imageio-iff TwelveMonkeys :: ImageIO :: IFF plugin diff --git a/imageio/imageio-jpeg/pom.xml b/imageio/imageio-jpeg/pom.xml index d57ae24f..e9e8e870 100644 --- a/imageio/imageio-jpeg/pom.xml +++ b/imageio/imageio-jpeg/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.1.1-SNAPSHOT + 3.2-SNAPSHOT imageio-jpeg TwelveMonkeys :: ImageIO :: JPEG plugin diff --git a/imageio/imageio-metadata/pom.xml b/imageio/imageio-metadata/pom.xml index 5059e1d3..82337b2e 100644 --- a/imageio/imageio-metadata/pom.xml +++ b/imageio/imageio-metadata/pom.xml @@ -3,7 +3,7 @@ com.twelvemonkeys.imageio imageio - 3.1.1-SNAPSHOT + 3.2-SNAPSHOT 4.0.0 imageio-metadata diff --git a/imageio/imageio-pcx/pom.xml b/imageio/imageio-pcx/pom.xml index b407826e..426793ea 100755 --- a/imageio/imageio-pcx/pom.xml +++ b/imageio/imageio-pcx/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.1.1-SNAPSHOT + 3.2-SNAPSHOT imageio-pcx TwelveMonkeys :: ImageIO :: PCX plugin diff --git a/imageio/imageio-pdf/pom.xml b/imageio/imageio-pdf/pom.xml index 52341267..277b52e3 100644 --- a/imageio/imageio-pdf/pom.xml +++ b/imageio/imageio-pdf/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.1.1-SNAPSHOT + 3.2-SNAPSHOT imageio-pdf TwelveMonkeys :: ImageIO :: PDF plugin diff --git a/imageio/imageio-pict/pom.xml b/imageio/imageio-pict/pom.xml index 22d0e530..3104dec2 100644 --- a/imageio/imageio-pict/pom.xml +++ b/imageio/imageio-pict/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.1.1-SNAPSHOT + 3.2-SNAPSHOT imageio-pict TwelveMonkeys :: ImageIO :: PICT plugin diff --git a/imageio/imageio-pnm/pom.xml b/imageio/imageio-pnm/pom.xml index ec28b21d..a4a2ec80 100755 --- a/imageio/imageio-pnm/pom.xml +++ b/imageio/imageio-pnm/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.1.1-SNAPSHOT + 3.2-SNAPSHOT imageio-pnm TwelveMonkeys :: ImageIO :: PNM plugin diff --git a/imageio/imageio-psd/pom.xml b/imageio/imageio-psd/pom.xml index 5e02f8b2..daa1568d 100644 --- a/imageio/imageio-psd/pom.xml +++ b/imageio/imageio-psd/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.1.1-SNAPSHOT + 3.2-SNAPSHOT imageio-psd TwelveMonkeys :: ImageIO :: PSD plugin diff --git a/imageio/imageio-reference/pom.xml b/imageio/imageio-reference/pom.xml index 8f6d6e3c..54044856 100644 --- a/imageio/imageio-reference/pom.xml +++ b/imageio/imageio-reference/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.1.1-SNAPSHOT + 3.2-SNAPSHOT imageio-reference TwelveMonkeys :: ImageIO :: reference test cases diff --git a/imageio/imageio-sgi/pom.xml b/imageio/imageio-sgi/pom.xml index aad333c9..00c3d064 100755 --- a/imageio/imageio-sgi/pom.xml +++ b/imageio/imageio-sgi/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.1.1-SNAPSHOT + 3.2-SNAPSHOT imageio-sgi TwelveMonkeys :: ImageIO :: SGI plugin diff --git a/imageio/imageio-tga/pom.xml b/imageio/imageio-tga/pom.xml index 7c65d55c..b2b3087b 100755 --- a/imageio/imageio-tga/pom.xml +++ b/imageio/imageio-tga/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.1.1-SNAPSHOT + 3.2-SNAPSHOT imageio-tga TwelveMonkeys :: ImageIO :: TGA plugin diff --git a/imageio/imageio-thumbsdb/pom.xml b/imageio/imageio-thumbsdb/pom.xml index e82f0340..23369a8e 100644 --- a/imageio/imageio-thumbsdb/pom.xml +++ b/imageio/imageio-thumbsdb/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.1.1-SNAPSHOT + 3.2-SNAPSHOT imageio-thumbsdb TwelveMonkeys :: ImageIO :: Thumbs.db plugin diff --git a/imageio/imageio-tiff/pom.xml b/imageio/imageio-tiff/pom.xml index 23c18fb1..b34fc99e 100644 --- a/imageio/imageio-tiff/pom.xml +++ b/imageio/imageio-tiff/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.1.1-SNAPSHOT + 3.2-SNAPSHOT imageio-tiff TwelveMonkeys :: ImageIO :: TIFF plugin diff --git a/servlet/pom.xml b/servlet/pom.xml index eafc3e26..a1b5f931 100644 --- a/servlet/pom.xml +++ b/servlet/pom.xml @@ -3,7 +3,7 @@ com.twelvemonkeys twelvemonkeys - 3.1.1-SNAPSHOT + 3.2-SNAPSHOT 4.0.0 From 3bdc117aa3e44f061085a806f36c1d92c785fac5 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Tue, 9 Jun 2015 12:12:46 +0200 Subject: [PATCH 050/182] Updated POM to 3.2-SNAPSHOT --- pom.xml | 40 ++++++++++++++-------------------------- 1 file changed, 14 insertions(+), 26 deletions(-) diff --git a/pom.xml b/pom.xml index 4cb4942e..db409a63 100755 --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@ com.twelvemonkeys twelvemonkeys - 3.1.1-SNAPSHOT + 3.2-SNAPSHOT pom Twelvemonkeys @@ -95,7 +95,7 @@ org.apache.maven.plugins maven-resources-plugin - 2.5 + 2.7 UTF-8 @@ -103,7 +103,7 @@ org.apache.maven.plugins maven-jar-plugin - 2.4 + 2.6 true @@ -118,23 +118,23 @@ org.apache.maven.plugins maven-javadoc-plugin - 2.9.1 + 2.10.3 org.apache.maven.plugins maven-source-plugin - 2.2.1 + 2.4 org.apache.maven.plugins maven-compiler-plugin - 2.3.2 + 3.3 true 1.7 1.7 false - -g:lines + source,lines iso-8859-1 @@ -144,7 +144,7 @@ org.apache.maven.plugins maven-surefire-plugin - 2.10 + 2.18.1 @@ -155,22 +155,10 @@ - - org.apache.maven.plugins - maven-idea-plugin - true - 2.2 - - 1.7 - 1.7 - true - - - org.apache.maven.plugins maven-release-plugin - 2.4.2 + 2.5.2 org.apache.maven.scm @@ -190,22 +178,22 @@ org.apache.maven.plugins maven-javadoc-plugin - 2.9.1 + 2.10.3 org.apache.maven.plugins maven-surefire-report-plugin - 2.16 + 2.18.1 org.codehaus.mojo cobertura-maven-plugin - 2.6 + 2.7 org.apache.maven.plugins maven-pmd-plugin - 3.0.1 + 3.4 1.7 @@ -213,7 +201,7 @@ org.apache.maven.plugins maven-checkstyle-plugin - 2.10 + 2.15 From da8a013575af63bca57e996df4de637383766f65 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Thu, 11 Jun 2015 11:28:31 +0200 Subject: [PATCH 051/182] TMI-143: Support for CMYK JPEG in TIFF. --- .../imageio/plugins/tiff/TIFFImageReader.java | 50 +++++++++++------- .../plugins/tiff/TIFFImageReaderTest.java | 4 +- .../src/test/resources/tiff/cmyk_jpeg.tif | Bin 0 -> 578460 bytes .../resources/tiff/cmyk_jpeg_no_profile.tif | Bin 0 -> 5263 bytes 4 files changed, 33 insertions(+), 21 deletions(-) create mode 100644 imageio/imageio-tiff/src/test/resources/tiff/cmyk_jpeg.tif create mode 100644 imageio/imageio-tiff/src/test/resources/tiff/cmyk_jpeg_no_profile.tif 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 320bc4b6..46769901 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 @@ -585,6 +585,7 @@ public class TIFFImageReader extends ImageReaderBase { int tilesAcross = (width + stripTileWidth - 1) / stripTileWidth; int tilesDown = (height + stripTileHeight - 1) / stripTileHeight; WritableRaster rowRaster = rawType.getColorModel().createCompatibleWritableRaster(stripTileWidth, 1); + Rectangle clip = new Rectangle(srcRegion); int row = 0; switch (compression) { @@ -704,7 +705,6 @@ public class TIFFImageReader extends ImageReaderBase { } // Clip the stripTile rowRaster to not exceed the srcRegion - Rectangle clip = new Rectangle(srcRegion); clip.width = Math.min((colsInTile + xSub - 1) / xSub, srcRegion.width); Raster clippedRow = clipRowToRect(rowRaster, clip, param != null ? param.getSourceBands() : null, @@ -778,11 +778,18 @@ public class TIFFImageReader extends ImageReaderBase { try { jpegReader.setInput(subStream); jpegParam.setSourceRegion(new Rectangle(0, 0, colsInTile, rowsInTile)); - jpegParam.setDestinationOffset(new Point(col - srcRegion.x, row - srcRegion.y)); - jpegParam.setDestination(destination); - // TODO: This works only if Gray/YCbCr/RGB, not CMYK/LAB/etc... - // In the latter case we will have to use readAsRaster and do color conversion ourselves - jpegReader.read(0, jpegParam); + + if (interpretation == TIFFExtension.PHOTOMETRIC_YCBCR) { + jpegParam.setDestinationOffset(new Point(col - srcRegion.x, row - srcRegion.y)); + jpegParam.setDestination(destination); + jpegReader.read(0, jpegParam); + } + else { + // Otherwise, it's likely CMYK or some other interpretation we don't need to convert. + // We'll have to use readAsRaster and later apply color space conversion ourselves + Raster raster = jpegReader.readRaster(0, jpegParam); + destination.getRaster().setDataElements(col - srcRegion.x, row - srcRegion.y, raster); + } } finally { subStream.close(); @@ -888,10 +895,17 @@ public class TIFFImageReader extends ImageReaderBase { try { jpegParam.setSourceRegion(new Rectangle(0, 0, width, height)); - jpegParam.setDestination(destination); - // TODO: This works only if Gray/YCbCr/RGB, not CMYK/LAB/etc... - // In the latter case we will have to use readAsRaster and do color conversion ourselves - jpegReader.read(0, jpegParam); + + if (interpretation == TIFFExtension.PHOTOMETRIC_YCBCR) { + jpegParam.setDestination(destination); + jpegReader.read(0, jpegParam); + } + else { + // Otherwise, it's likely CMYK or some other interpretation we don't need to convert. + // We'll have to use readAsRaster and later apply color space conversion ourselves + Raster raster = jpegReader.readRaster(0, jpegParam); + destination.getRaster().setDataElements(0, 0, raster); + } } finally { stream.close(); @@ -1064,7 +1078,7 @@ public class TIFFImageReader extends ImageReaderBase { // If we can't get the standard reader, fall back to the default (first) reader Iterator readers = ImageIO.getImageReadersByFormatName("JPEG"); if (!readers.hasNext()) { - throw new IIOException("Could not instantiate JPEGImageReader. "); + throw new IIOException("Could not instantiate JPEGImageReader"); } return readers.next(); @@ -1181,9 +1195,7 @@ public class TIFFImageReader extends ImageReaderBase { // Subsample horizontal if (xSub != 1) { for (int x = srcRegion.x / xSub * numBands; x < ((srcRegion.x + srcRegion.width) / xSub) * numBands; x += numBands) { - for (int b = 0; b < numBands; b++) { - rowDataByte[x + b] = rowDataByte[x * xSub + b]; - } + System.arraycopy(rowDataByte, x * xSub, rowDataByte, x, numBands); } } @@ -1212,13 +1224,13 @@ public class TIFFImageReader extends ImageReaderBase { // Subsample horizontal if (xSub != 1) { for (int x = srcRegion.x / xSub * numBands; x < ((srcRegion.x + srcRegion.width) / xSub) * numBands; x += numBands) { - for (int b = 0; b < numBands; b++) { - rowDataShort[x + b] = rowDataShort[x * xSub + b]; - } + System.arraycopy(rowDataShort, x * xSub, rowDataShort, x, numBands); } } raster.setDataElements(startCol, row - srcRegion.y, tileRowRaster); + // TODO: Possible speedup ~30%!: +// raster.setDataElements(startCol, row - srcRegion.y, colsInTile, 1, rowDataShort); } // Else skip data } @@ -1240,9 +1252,7 @@ public class TIFFImageReader extends ImageReaderBase { // Subsample horizontal if (xSub != 1) { for (int x = srcRegion.x / xSub * numBands; x < ((srcRegion.x + srcRegion.width) / xSub) * numBands; x += numBands) { - for (int b = 0; b < numBands; b++) { - rowDataInt[x + b] = rowDataInt[x * xSub + b]; - } + System.arraycopy(rowDataInt, x * xSub, rowDataInt, x, numBands); } } 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 ee26b1f3..60c50ec3 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 @@ -78,7 +78,9 @@ public class TIFFImageReaderTest extends ImageReaderAbstractTests4)G9EN?yIhb+f8{P|q9 z0}8W10D}DS3QH7>f64X=vnSy!`XMUJPnXz6gGn7Ud;inY{fx2 zo{I?xq{t)($YtFbAkeZ_O2$t=PfVp00QTxwA_(NSM-VG-s}u`TKj98w%endfr}+g7 z0$EH2{kVH2=Om_>hNkC$a|+UPa!q~0olO@7CnRNL%N2`3_O^D8Znmy&_D-gDc5Y5C zZVnEh@eAXZK|UbGUr7m&l$3#7Nm)f%o>Wv-CX%YEnwq+rnyQ9|rly95_TSU^DCiX6 zn3{q-$z7BuWfdhwRRxfmx`w9KRFI;Al9HmbqN{8Hq0zc1f!N|iKjKX~E6hsDbRqBCH$lBOMpEN`PjGtvRrLrW;$U4-s)lYeb6=phno82 z%+kT&TsIpV2n1pcaj?$GPqVRGwrrUk#@^lvu&^qCWrGu-R@nvfzk~e5S(Q?dl%J6c z&dA9&mE$HP<`jZG%*^Bu`jvk4D=YWcgR%>(C;Diel#^uxO~|#ev$nPQg$y)w2RL!_ z$xlfD=j2D^Q?0>70Oxu0h|1P0XwPbf53+1X8`L?LgpkJx!3}TM8 zpXL+c7oL*$ckR!(%*>bw$J~Vcf)qLP9%etOpFHWmBgxxLjG$XWl6+n9Op-4HDar0O zf7AZu)<2tN{J$Br@7R-?{?GW3^px!X(<1U6YQpM&1}Vr%1w#_@Q@qlEIQaeQ_8s%@ zjs6M#eQC(d`1=ri*ZzHEe#YoOM)H4cZOQ%lsp8)!;jildT=suex%uQ|=Hv(GB&T>f zy4(Dl`mgT0|5Y8};}e>nlbVs4;^~tkj~Y|o5Wg@l;2pRqAUwp>&feM4#me5z-qzM} z@nqOZ?SA0?I~m`#z}pjeaohZQbN`+3U-9_AEd15s|7GCGaDN^$nT_Adf9U!xMUxHw z&^4Kj-^zdJ`YlD14gSzInT_Adf9U!xMUxHw&^4Kj-^zdJ`YlD14gSzInT_Adf9U!x zMUxHw&^4Kj-^zdJ`YlD14gSzInT_Adf9U!xMUxHw&^4Kj-^zdJ`YlD14gSzInT_Ad zf9U!xMUxHw&^4Kj-^zdJ`YlD14gSzInT_Adf9U!xMUxHw&^4Kj-^zdJ`YlD14gSzI znT_Adf9U!xMUxHw&^4Kj-^zdJ`YlD14gSzInT_Adf9U!xMUxHw&^4Kj-^zdJ`YlD1 z4gSzInT_Adf9U!xMUxHw&^4Kj-^zdJ`YlD14gSzInT_Adf9U!xMUxHw&^4Kj-^%|- zx-|dV3zw1&Y=DCRJKaF8-T}eN<`bL!rcUIOvWYsk3B_F?m)C#a8K{+;59~+`DFo*h zf&ry`dnG8e034nOYzmvO2*?Jfq+}On$t&ct{O*&PFE3A-Xd9jZm0NgcfaPuE)!#8w z^4BJ0r9`aW5CN#ZKkR!0U;{x;YIq8`FgGM|OA=724GIP2gK~hsRFEks9FzhAg9<^p zaww2y?k{VgGy&tC3C{lEk#=HXMkY8Tdjb-u*O;*O362i>&c<>%grXIY{ncarNj(mk z*jZNq)EmkzeR9FsKRW?*GBN*GAuO#R_*cOvKilW8LN@rX!kWa)f?qXj)4)Z)3ahg+ zSN$pgJpKjkowPOW2NB;{0)_c``vBg^x7dQhl1)vMa|#nz=G>4MCz4-&_J8QSGyl`h zJ3l!hG8^nWKP*!|w!e~hX0qwO>B9;#!4vvWXy(eWU*?)cDM`SFBw#-su>0^wRD`C5 z7W|9~xhyvZ?sB(5Yf@6b!~Em15x_3ke|v0rQs#GkXnxYlXgR_}nwpfKle-?+3lu7k z(2VS~pY-Xnqe6A=x z{q6(EAGj+3JBNSVC+5+@i8|dM4+U;3u%PeprZb@fb})mW6P7c7mFG^NzMd#+OyoeO zFwqLwGb~SiNH2Kx4cDfzzaze=_fC57*ND9gQ;`z@ai z6I>{(PiTJ3Va1hz8n}KS&6P_Nd$qrh!7O=EN#6hOJ(m|jAYdo?#3h%1Of$LoD^1o- zw*6OwpUNK&$&1;Anew$y-Yr#Nk8XBy!9V7764(x?lZOUKJ`sLJ8&Lj7w1T|G!R$f*u$jnGeDTvBkBcFB(e|wI~L>-{k2QIaVLcpp?&r(av&ne9Pn@TljVq4?S z6?JvE9R2$~MF2x5p%9$omy(^5FW>D2C_wW4g+GinzZ=Un@|u9GG*jUA|9AhDfbFz@ zd#y~6|94GrLE7J6J*o+r;E05@zgg)frDSGCq(H#|1^yAiYkn?n>Oa+gGuBAY$%lJo zW~BXm_e}ZTdHjc zn2^8EEa2<}Ajw1c`>d2(fK=q~So!Rc2M2H|Sb{)>z!1-h)1v8MMo`RB|!uVC7 zqiW-$3M&9FRVGeS__;(VffN*hgBT`GQc(D3CGf5Q&T9BxITfU!tRO#TK}AhfT}4UT z0jShdQU*?0Q1M!qU;v!5V6QrjR|OohuwZ)F?nDR2eEdltHFJLWi<>W#3Y=zCcM%q@ z5=11g-ctj1Har!1E9F%;aqsEE+pm2sgtep|k^G2-@5d`d{SW6W=mCdG0NyH3_@t() z;xysHJUe}5z=J$90~LE5Z<^c#;FyOO4hs@*=HvN3;nR}}9ABEN${kQ!=(Oh);6#mK z^6E%uaLTP;F8t3PSp0Rw!}ukTw$j8i^*}2?iUA9Du4jY=EZ__I0Sg*j96kko+srks zNyP+Uj=WNyUR?a~&^QSCEvM^?$+vU)D?W}9#zFqO0sABvkOjzFR*awcPZ*ycF#i7y zOyGBzlm7|x)0_VuX7l)|2fOa|hm3;)ARouZL8me>W7!qo_|IRLj)Q8??FpidgM=$) zjDz--pidn6#<+ty>UCfoB)z)gtNHc&E5?oJ=->*{q(~1+Hug;=oNkTn8J#@anKpcfNLp)<;ecFN&;eE#J`|}4ITz$g?j<9EGQ;jS@#hxo!g(ry$ulXod6pr_740X;(0>0?-!@eLaT)y1byV zws?o8@0a}0kAucfKjR0O-(%B(2ocr-*|68!_v4`HCD-4! ze|a5v|NK9SRj*8*d2am5w)tu?gZK>w6D{Be9zF{M%VHo{0x{!fCg8To;rMbm&wsT4 zN3jaI;_HDUn9h9w$+u2c9JjFt8b!wdnfYP>G-UkjGyZ1R1%oF~p*aD_8+`xow?M>{ zzwz09Dvojxv;AYvJJ(%rWHAmO@7~*_EQSXjKJR5-&JP6ZM?YN90Gw$uvEI%DRzeUc zQobI_*O)0FFJLXo0VM)ogiL|2M(KbI2Cjk$DHpIX_>F}raEMGe$XN~uoKJ%#dad$a ztq6Qr$;}7n%fB40Nk}wRI}e;&^L<4JB_tK(dWD9r0UChhw(|R=1c1Cd_x)4TX{&#! zpJe*4qGmF1iV0Bj1-Ot9a4zs=L;(uO)4c4xfj5N$69lSO1!Uk;>@OMkuv8%Hy0 zY(WaEWxzY92axSRO6brZvOP$pUs*1vC1im?YR|WWKwMrD&`F@r^1itIcrGA<%znFF zU2gTim^MVmn0|-5)&c_ETLuChIG&XXmVZ(QDJubA0pvqHIsHo+P{}_~o>pj3ge$F8 zHdB75azwR4tx!Es!&KwF<}s}rZK%!~T{GSHQ;too(?jY<7+6nJpLTott{J6 zEoZ6Ex?{X&cI6!O+)XAPrgKfl=iM;dGrx8L#eB=cwHEe^3>SS}e0#~^rCpX%D}r^F zO_Z&Now>cP{d4=O zd$ajX{JVq?iJz0kQVdt|!<)K-_w!8dBHth!QVeYLN9oTnz|KkJS4oy95cEstZ z|JcT3*~jrG#3!3i?K*w-%;R&4=VxB9z36`_;WGS+@anc}hpykf3A#1y_WV2ccfIe0 z-A{gieJFdh{qfl+FQ4f?w|o)!GUFBPb@Q8}Z=b%`{b2oZ?We5I^e+ux_kO!EJ`Rlk zK?SbjdL5fhEol18g_&d)%6q^WBjiX`bOLR<5-6 zn&YkG{mtj)synOC`tI}V^{)>o31kJ~*Fb}F)~1IfhHhFH9TpWH5fL2e7v;U)bHnmz zw-~pL?y)O2`Na8e4vAl%5TBTqv?Vzwr7#thMoQ;oNVha>?ads`I+J}b=VP8uzG;CK z*u5~gC=QYbCBjPJ?TG!z>!=SH1FSVJ2%kZ~6H7=P5(N z+pCH3Kdc~7+^Dob>4|c$3R=}qO%E9VI*lAnS1kptBibUJc-^JI3b1!7M=w_2QvZv= z(P^^jnKL{Mrx@Nc>X}KM6>DreTXpv3IbCyUCh?}O^QO*wXtsBL*#f9}#6nvO9gD|{ z4lS-18#~TEY6Z&8TgI9o;_5Ae9z^mYxlBJH^TBP_w^oLo>nVn zu2fz5+Uth*F`vOzEvrj?nSN;h+<>IO^+9Xacn2?AYZGD~I%nPVFx_yq2*rqRk)NX8 zuYbGYP4t@>pqs!d@ILP2<}V4LMCByS2?{*xA<)h%Z$xR%Pz>lL&eH)UHF59Ys9x?9f~>CleV6o$6zq)Si9L5 zIWKt{d^5pvVWcQWOe?OH>?*k=eJ9f|vn~&;NUJ1PRaFnyT&{gzKdr&8ac$GqW?D;q z>)y7T+r~R)ce-_L=q~IL^mg_g>wmICW2eQys=>`euwlWjwvqk2Z|wOrYOv30zwd#~ z2cd^}hntV=J$iZU&2jA$<|jQ*tv{W6hIY2*+|c=R7hYacxomW0=~d5b>#ir?fZk-> zs<_>K=iuEd_g+6Rdg$>e;W7D1^V4I`UcWGU>G3N0HSeCzJTID81O#u44$`EW$nX|W1-#a zBw^_A#tWfh~A(;ryaG5JRW|YzkZpp@CFGsi2iHidaRQB3_B0 zOjILjl65KiR72Vv`T~X}(~;%D_Tz+c<9J*65CKuh7gdY9iuXv)l-!ekl_Ko!4+o7}5aUgb( zG}JzPaYSXe-JZC;tkJ=JPY;+J3_nCZy#2`IF_UAF$5|)#pHevOc?NlQ;M~^>D=rc* z9loM>HRf8=4TGE5ThH&r-#v3b=)veC@5g(e20lCgBK_s3*UYyj?>awteLVU(^2@bv zTY=x=Kv>}KP7dZ027YJ&vj=0i?L1}|`nI4Ea{_%5@)`3AJ+?6xy9B-49fvJJmrjS` zXQ67oSfDeR@SA1mL^}R}5jvfEu$7F)QP%TD(XHf#MH2KK(zKWo%p#(?y9~o1C>!3z zCg27?Vo?iAG_UKREJfX;6{uBwR&yMxkaM4_fa+$k3jZ-*h3$x{#OR5pAsnBjJeS^}Fk7NVO^wa}RR8Yn z_BNCQ{n9HL!edv)g&0J@_Nl{Jh}2HK+N+3)=1N8e;z?~~-Y%q1`GfWSNMT8gdn)pb z;M<%IB$s*n#d-MnQR=x`gv#E_gQpO)2dFjKh;`k^=x&IzR#EOH#LGJA`ngEA@@Dr{ z$o%5>bKyvRHvV}G{MyAgXC2|!jz1ZI!JqASuU>|jJ+y%4fJo_)n4Jm^t4e{@B<;I%NV}>;N4dlcW%)h!MCB4z=>tNf7(}SXALBpYs)Aq7 z)me8A_n5WPWh$}tg55pS6`MypaZ`tQX~)@vRfLz_?j01uoYt3;0en`2DfTPwQdLI= z2p1#6hSp-Q78g2y!zS{}W_e=74DR(zV%2`<13HAB;rMnP{H4D0#ar>_?WZsgaJ;5v z>2^5H>T{vySfmW?{0#G49Am77e#(4%O`C{6b!Fd90{76~w&VDYkvHN{-0SW2=#RLV zj+1E!?CBBK-R2(Q*R*EU$GxUV3DUC>eKd_Xye^ z=e(VrdK25&UJWHQ4tqW%4_aJ$vK1)kspSAG-$$7lD{xkY%WN z1`>HU#hLDa@?K+0vqm-AzNFqoo9f=6e?_0Wpv=pll<(H&MSJb?w{8POSW zkB%VVlb6z*@GpXTs3!PayHyk(-bBxUI)r<2_A1wxzjydEdo$O)aS4;gy2XRg-!LA+ zc{Cc`I?03TN399+qnJ~y?darWvV#6Q@&O|M^cV+THa_^3C6z|iZ)Thk-{G94dk98h z%cxg*nu#kZ5;i(;n4HGcv}+_4(r!)Tk!FxjoxIBa(6nyAlx18?tgU54SA1f}(sq>| zfPAH{D}Iy^MbQ+-1$vMUaWjFL3+L6mVxb0GnK0~3&n)!j2 zR`aCjCgoN6*LVV1B=rwCKw2g0u^S<(^CD(E!q?L6kJYgAM$)z`GC4cKs)p!$yD*Hy zG_%$@h4(2<^)ogfCHqva2uL7alIGcs67a$?!vWk0M)Ft+JL0H!-!W#^D5$cGUOMoN zew6yMC!Pz5OsIi)o6qJAAUDKL|FBw9Q&OPe4m>kw=O8Y7^#xpY9au%IV5>5F)UrIFDt5pImRcL!6t}5Ou zc`tY@Y#`3!ZRB0ana45aWJd30DXih9JfZNr;ar?V!-ivW>ErYiZC=+D<(>Op{~}I5sgw zf}T;~BmT*494w#f-8hiBf_1CLWqmtCQg+Sz94%DBwA@dz5ZFzl69;IghjJxr_b+cm ziE@T}1kd;l{mGbKu5L%cRuZeB>Eil1jM$n?ZwmE`?5^c8a)+pFx;5cFy=sss@j6-D zP$G&u_*5{9&lv%uKXaaLkKFQqTN2_!#2g&ipwCSycM8?YgvU)rM zQgf+Vf{5kLDZh-^igYW@Ky;*ikOU!3!_7nlWSa+7uox9;KFn7^TWZ|kwPGIiKC9bA znqBQyg(T{*tILiNY~dfI$#_=kc(E_uB#a=;!JYR=gkXA;m$|&URfF!{5%d_0Z-#q_4JE&Z1HKbVnGTq~)E2 znuXQH3sziVit2}`}JKNd9K`V}5oubh%Y z-MG!Udh5t>=~y{$#|_GU>B;Veg;R=sTlXez5WKE$4@u zQO&ih;CyARSy#Jh%H+TR0E}?FxyCQ2@`N~B~wAZ4k zK=guWlm@kqn+T!sMC(*UHol=D7Xi+VtC@%B-_%`Ug+IJJ{1;x#;3Dr18eJuWDPHwd>-eZ$;`83?kz-iJgxK?Lc@jP6~JQLwf z+%1g;UO(<@t!Udh)&L*cJe6?^i>%9`TW7PX7E<@e#+I2;!~wk}iDbSrTl9d`F>h3` zm}IZDgo7re)?{om7hmEOzR3iSy4=Vsh*_H|Frn4NY%MgV8A2H zU(88k9n#%G?<40{vRY4d)v>7!<82F&w`u|#E^Q^0pRc|fGh13w?&_Z>rj&F$)A(SK z^ZZn{h;w|(JX#~gxZ-$g&A=PhsfHuH2&7xh)ONQmFUxsNq0v>+keVKUEwMwnm-8mR zqNI5~gY|}&F{P7wno?6?*-G7)!g6kC9eRLhseaH`y````uDvhXL#o#_%WqWlu)5ZH z0k5YtA81A9*H1O0T2Zx&0|qJ)&&br?yNIsB>m9L(rj%JN3lX=&U)P5rBfTA}9wVRH zjFuarnvJbXZ=iRp`iK$OPBDIG0TE8x)ze2PDqPfVi*HP(G`+*m4j0zVz#aBBuH@iq zZS`e^xZ2rvB_#Y5wa0>^cm>hW4k+^rNu_%i!wp=tZ3(S3>3!o%YEZaSts=$V>vP3s zvcK(`QcV(Zj&d=DWTmm5hbEW`-)`>|p@=?R@AxkZjkr$nH(x{y3l6(tg>$eLRYl3qF_$zNO4}`wT4t7J`7$R#5?ZQ zT!!F8*@`54nQ!O13v=mUEiUU0@s^;Vzqy`(AM3nP?Vn%Ny1d*cac%u2DI-j;s;5}T zODx+a=&~IyKEs92?H8ne-Z9j%%# zo8v{0X%yeF1Bt&12233JZfs*6eMUanfWM{hRzC+f+^N-Blm~AKYbi+}*IlfiwT@O< zQ~B7-v$Ul2p6xv`RLn3*v@GE1GPF#Iq!WCiy%CZoIBC?GgDDHFp0fk^ucOG7D*uF}$M^sS>lb8-}zC z>}l&q%G?qfvrtZpx6~X&eVP$e`50rV{8+LI`s8Sr9A24ncr=vBgT@V2(=TS2_fMy-j#2Em zLsbqeZBZb9bsMP5BQIQ%Tj@xG8;MGNqe!g!3=Rowq z_A{)3Ky1@P#y7VUwae*SmW-9}qkf&arQ|sUuKtxbm(V~_*;6gs2$2jtEHO`q^sX11 zMdRBQ1)BrY8=rG8x?QfZV>6acFJmw_%rcUM(h4+QbFzp5Wa%EAT3d+CKv3neYPQ(pVXcL!Q+te#K%kCRvK=CwR3I=}N^gKpZP z9+T?q4bR&K%Pj&G8e~!nw;NRwvG3A~QUQOpv9;(tGgB*(`H0zfO`$Pt=mjh5{J|`a(ckBX!VYd zJzLUNb-T8`-%!%Jz2S4f?Rs2wqT9_%m~8jbgVF@?BI91+Mz)u>A0v`<687m-01CbJ z!Qp=7%Q%I-Ymtqix`TGe9bP+n;V47<1MNPj=K0H-2GRL?b#>1$qe_QL_T${(fhT%M z7MXJn%_4k?v)$cJm=fy0lZG$y*6ZGdH+NXqwh^znz_6hZKi|Np`VJnU5+HtsSA}Db zM=|R&{SOS%@5BXUM=j;RWSM0_7y zddyO&khy+8nB`KoeN4%mxJ|=qBHK_|-vFQHJ<#69HE~R8{J?r`e!Y4lLz$`f$Tmeutm9CFj&OLPv~mu&&M>1SjlNUk zE!&((fTtaC>9EM0wHMLMkFy=PShqG5-vg^ec@MX3mT5Tl*XI>CEgY&y;D;F=mVg;7 z&0Ll{aTFeM_(b3SOy#{g9joI^29lZ=hQhl))$+YZS}#>(IF8ocEqT3gp!~8xYWTeP z2y?#X2_}{J{zVJI5k@}GLr`IdhQkr};byg0kdbf!LkoEVp_ki^ibPN&V^I$f_gxy% zGQ?XwJmwud<7ppk3u(`pe%Nhd!$1!_ov^)H2!D_NNV7$7@o_opkk+_k5i;aSoW09I z6cn3f@E&c4ZhQ0r@`0~+$^=T`H0@XgGiN1K7Qs$13MmjchBlC`g|Mg24ZnxDK}NY; zLSl(0XQ(4b@QerPMGwn!k8gueq=WqiP^)5(awPP=P>FN_*2uHVJO@u@qr)8##*8tS z%ZMJDxnT#Qjdbvyc9DJat+DK)({=ZI6(E=@YuOH{tLz9d8U~W|Z|#L05Izs1z)?Ii zm*WUsR@zKu_<1V$_S3?l{=6d@MH@Svy3HXfEuN)Dkm0%xf(DdO3Et8U3oPBT?mlc> z3~|{Br}Bie^x?Mj>Ra;*vqzU4>Mc?qZ0h6}we)6|^gi({ZDL$2?xffTmyQcU6L6l`r>Wt% zMcB&VaNH7Xn7soo5A$Sd1D=jixOf3KgQK@cjNQ%r)RKfnGE{|r*l=13@(tFF@;=2H zYfo-ivmNU~inWiyZX(Xo7h$j9L(e0zv!x>=(U`Nvg-uBqiEtwyiGlD42pncBM>E+J zlfmp>vkvKs^owfOqFp=QvW?JFn};EfQD17W zB_L5xE0zSdqK=m!?Xf7C;DaFw*-5{1A`mS(+_3|V4%|~xGYzf0bA+XWI@=urQ9%u~ zu8cp3YN^Wz^g&_EbM1>z?#1hk<|CIdryZYzW}Nrk9*=e&dseN3dN6v7X^QF?)GzW! zak_WLFGE3FWC7Pvfi(&CvB-~7O`|HrD06)51S_DZq96Ey95S=&8J!DhXPl=cK~oFU zsqrxTxKs)QuIx)Dzk!cg`cbAMa<#gsV5Gs3XvR?-xR*-DU=LRur}<)o=_*tk%%_4k z6c5a?O$p>|Oposr(qT-QWi_b=L(Lo=6|$-+|E49Y6r9r9taA7^Xc zW>O~0XCsqX&G1-lNq9i>wwg_dq2%jn;Xe@b_i0hzR*Tw;DM!l1(nNBnbc_^3>L?D% zbs&xjwPQMniagy_I|wf9=~ixdEF(aFEv}WEwRbg@+qS>$0VSoeO>&OxUo%Dok$fwB za!iRErC+0;6ENbttHSYh{JT~mxG|2pK{QrMow9o$HE_rDRs>~E*Y#p5>2vE%{AJ>s z2Cr;eqDs}XXm5gvY>&@Zymhh6YBO#*pEAuBGfayg!BK&)5-tAZ7emX$*`$MghPZpg z9qsF~k_n@YH#bz_uT)q1)Zs45e65nOM@31~E@JfP8M_LoQ%)o``;jjlxGchxT6U3e zvxtIzdgc&8+!T!bSQb}||f>olSmcab-D9u&m^zoHQYmKZXB6K^JF zF?tEd68$x!jg^aj7tzePhf(%?LziM^Sy<7PFe|h?Y1J6v_EF(#x^HbW--NoKTf?13 zi9zr|)73}@R_ zR>KsSYh=`vDmqEhw(cqQl<=#^3Cdz#(xMPjG3&+DGy;iytt*+Y*5h0*<2>KSWmvK9 zG|h!7Fh12PCLgC;RxDW;L(P;zJ%r>s(XmBf;xq0mJuAGF@~+d5cV+lV8Jjb*-HGnZ z>geo-STY7%NXaI&`*n4pN2v=co_Pe5eWmjkk%*asXuZR@8`Lu$8+Zo}-IBF%8u#ea z(pcP`c|~xBpnE|Qm)6s29-2hCUl;2BiL6>~13b$>{f zO@{?dG zRh`FriG9n?W@iWx(%G>n?pbkppbOhy5ahyO9OY`y$IxKRLpm49+N85JC8ZzRFY|mQ z&zd_h!J@Zy{aJj0S(VPlquc^nZNM<=oFv{Qh2bJxFu#Y|%L&xwk*1M{s_RP+@7Tpn zkPLQ<&`8l>TY2UU{`H3U8(p~zt0e)xEMi%Li#`32Waj*H)VVyrDf5Y;6mZq0(vH0+ zIhB&~!E)4?NZebR8N_ej_Bdt_=Sd^c|0T<_+SmCB9aCB~|0t!8e|n0Lu$`(T3u_)O z4;LxHhN^EB$(Jq&lNq;&wm(8NS(L7HpB&vy{ z>!H;*Ny*j73N7%?@{-czWFP76;;-R5i^GJ6y{`){^Y+>mb4lzobDyv>7&xs~ssr(j z2wp$Ch7C6<-kXucelDt4?>^t#2btq8HR;V4RWm?SecbBlBW zNc+e`ET!Iv!hNWD9XUm2SsPnAirO}z8*CwY!OLqDpz-eOE8JiyOL}F~;LsTz(m_Ot z@>~HK-NH2PQA4jq`m~#%9%M?I6HuM8x9hHmS9 zp(P2fzJPfd&!Vw9(~D)WJFO7m!!4+WdVa!2ml|cRUeIW{i1l*$IcXA8d1;9_guZm< z2Yww@MZ<{UM}SffbUd#33R}|hLROSz%4bJ-KY;^ku{3~u_;zhxY-2jKu_dWiDI>8SUvVPFzv@isy&%)FP>JL6J(A19DoYb# zE^oH64%d%yMH5ebPCQ3x@6hjPg&MYKw#200te;uGBKk#DOcgZnp6saX^K!f-LDFQY zCAcQIYwXX#vYfOOsm7#r6#MpD+aEz{o6mGLrz7hwwbn;Vt90wf18ZePRn5zzi@(Z} zm);c=iuH`6*ss~kv{EQVq)v3kNJ5cO&a<72qKyf{o-0MC!soT;L71z&n&Y5Q#~pQh zV3-Avs;h8`-pz{3h|7vEL@O}*sBgn>(Uv**9Y&~;1efkq6gBKt+ba}nm2KlO)IP`i zwVLQT<{A}8(QJeHvTqo7MlDT9+0r_YjP5|69yW~bo2ko5!4M8~pM_JIU}@pC#Hxv#>En@icJd>+&- zW8QYMshr1Hu+Xk_2@N&DB97%kf>f1xcm`DDMD0^gW8@O55Jz_&sx!+f>^W4WxjB2=-Li%27){Gd zxIUzsgW_dQUgcQ=(87}?(>P*7b)h1Cp$3S)i8v2I-|5@hn&sTHx?$&L=WTH{O6w9E z+sbQva%=3Q45y`K7sVwOYLZCam?2)E%?Q$f(FjB`!gZ%Yk6Pxr8l(FoS+(t$i zm?*!U3bc0t>D>iXsk=+t3JTGh)3AojH)U3plXmGj$hH!vsfamUc!k_e`^Cc4q(!?r z_=-`k+aGg|1Y~qYvyQo^w~RBDtuNMnpl8j~shmcAp|31ukWQ)Qvo-PMxjy@bOOZ)a zhL1~PqZam$i?RbYb*Az6yJxkia-(eK)t+EanTIal$LP@SmVBW2s4Zf)5=?U!@0(h^ zDe?XA%yM|tjD8R4@qmbq@?wa4RzB`<&8rLrE@eFNX(c505=PKJO$&D9+x zH)$o_7$VokL@D=GS3C&_Y5!1q%{{w`B{8#ct??ITn<>d2a_SA*#BH<<>elog!lj(o zqsHxo#6v>{O`js)^qJT04hU#3sQBUzZc-=}*#uViiuVAm)^ooYoE5#LgVd>XHR7yW zSw$fQT8D=rv%p$iPa)3=4W*Z$M~ar><6-R(my9)VG1M|-B?1rqVBdqxfvwPagL(;} zUQY$PV2lpjEVM%(>Ig4#M2jRc$Z|9W%Y*u$A!(ms0qCu3neYI#xBYE|6>4;V z_KGwg$FSYExglKFSR8pV$g4+}$u#AH?xofo;L7ShO`tX;cvM5wjD;MJX4pMBPN$ZC-`;M8)~R z(ak8BRSsqaDnus+yA_#vG#L>{rS)MEVv0v)1Mq(&>hx2{P?9cqC$gXD5VsIzPDt^+ zjuPXURx-2>jz7f`eE@Ur&=>e@!RH=tID$tlZ-rmwxY1@HLRm8kA`pidE}P~fSJJln zu1B_0q*fy+ZPKo(+ffPlp#%G2{uQt;J6L<^P1zXSSOTUH;B3*Vd|iY#-#6ACLE|7+ zpGCZ3Hd&oRy3sD^D{w{4}UM> ztWHG4^17{VBRH%}28IYviuLGh==#3?ZKKfPjx#0QFpHM?#8WV7-QJvAaD&Ram|8fs zv~IN`{HD0h>KQ_n*KY6{4xt{|(+xG+!)_~pA_mYBJoI``1>p#6%{GG^b=cm9GtnR5 zE>%OTs^H{Oy46#-O!#4173>n-U^f}^;aGcX3^a0oS}_sYHM|D@5;n7slpO`5w@-;K zfPHK@uxbU|w=&u4G(5DJH{Al3%$Tw}m~uFm(h8-h<<%88kk{p($L}C@fahivkd_o? ztrrpx6?LyXL#%?_uwaucpdIR$$xC3R!w1PA#Oh{a(q@F8h)z6=$izM+u12(HsuRv4 zHKHU0EHZs%Dj@_pVDW*#LSEAxBhEs88pIO|$x9nSgl8lJfrOAroQ8=YfCyn*&fu%@ z9g(N;>+$neTHsA^+(ldQ3$d@X;rK|*^_|g#NS;dFIQ}yGGVd}zjd>0=hF4>NGK9E3 zT1Lb}TsGywidLK@Ib)F&r%ZgKa~FFWAF(|K&n&%BJ0EW>spVSZ+C>6nDlV8mln%vy z;m(SfjqPSNt?Lyxiy`YfIZmY1pA0htPV@1 zVpYr9!;WGaORPLQG0wuy#oFi=?$W7OQSFqX?jc$YWL8DhKyuYZl(nd$*88llM2C`#Od%nXe4nubPX^DR zeZhTBP^6y2(Svg-$8a{wR*)ZK&&)R8Cs&w*k2_*CSM22Si!ZL2r2^09FH62@I@z?^&ZFIY2mL+UKdQ`uDUE~XbX3*%T>;<$z>esn1s8*DdXB5q{6AIrIyhclH_7=PZ8{2g(BAf2EfaE)pXocEV>(v&f(L z-L(xxGr5?`gp_=CyeuiApBX8s^l71o3BTEgQ2lx7CWYi+<|nNS_(!CmVmD!H*LL!B zes)`MVKCRJQ9pShkS zD={A`jzh?8$^EQ{39EVkg%qTX1uk`pTEQLR_bmFrSrAD^A?MN3DRb~O&gZ-{* z5Lb%cQ!c=M%kC}3VIgt-k`nCVwYj2;m~oG4!CK5COE2CO%oU>-oO;Yv)mVBG<~6Ii zavz|Yg+Jn!8=BPhZfJ5)^53(-AOvCaC9Amf|ZI zg%$C#Yy@5ARI+;OgOb_e)vBZUnB1HqtJQRDz=@lb zsg7X+viPl8IeQ~#xxlF#z2h&Tydz@P7Vt}Jy0xbCuIk;;@3g^|5512!Tgmi0UT@eU z)>FTCjO2fk2ALgXb#au;w^PqxBdC|-m*AQP{o$L4=|bZHOXRo2{vIK^cB8Blgt@$C zqU|>>%-X+=h6m{d%O8>NFrH1;;eC-`#xn6$^?^gh_=SSHJ_#W{F}&+9;r&Kr`(fh5 zn!j2T63`~4^$^)vf2*{K%BR1XSViweI*c0Ao$4TiX0)mNQ@t@XV#3wV5gKq~PFofY zzBanGfJR>)rmCY27`zcD(!SDuZ*}1RLPU?~@OIWN^#A25^Edab;V2VO9US)QjlNnN zw!>Pa>H!P4{EwoBdByOL5XbPNIgIDDB*J0CfwE1tdj0Dqd3jUa$)b*gHSJR2l8x3H zBmT(RL1iB=d&RhXjzc$k!vDk!p(c;*ZsWpch7_$6H5Gj{<*&RoU8)w|mLrSnBxa*c ztD|K3+Gh%>$j~-kmde{@+{c?^Ev0N5bLcw>^Bnxx?NI%!_g=du_gLp!O~Dpnn~N%8 zqm{a>rC{BbmR>2q_P%trfNv7con`HzIFB9}`v=-OC>~0!2KEAaU*)1Zft@$ElxSPp zOhc}zE~)F+ZIu6N@w4-gBnaP`%yOQxw~#wWS+jScZi6Wkz-psjrxCwg_fDJslr2tL zzpm+!IaO_&?K&GdM_FVSA|4U_GPUF+vZv8A3)f(~n{4OL!8IlA)6WroX@9qdBcDXR z9sUQM;pg7}4Rg?i+w%^tSKjX&PE)2DpUcqOGGGa+>?_ zZFXOzvOkyg+mF$0z(TnGXxC%@XZ5y~#Pl~fBKpSAL*nNz$g&$&OwUM&MX$!EL?=_P z4c!oKiKO@W^I!U@I?wUuSLbR~T*a~x)eIYK*eL`s?jb(UJG6eR@1A@~3dm zsQ*Avs^NfN_u)v_?yB~Fzw>R=t?6!Qs*my;Hf;H3!E@uS+(Fi-#{I`CU>`~q2lC+a zne+t&VryK?wu{IoA%rOzI(6NPvHO_a4%A_HoQqj~ABwO?Cr$Yu_QQHKk5cHK z*VKcV!0n%@*to)(cq$;|_V`UI$8-PC8R|~Q6@8njUzZGY{HBrg4$D^4{xp&gPI9rO zxw~69n9S07HM=#gZt4u{)<&JNd{&;9&Eh%wx#N6K3RAk2*LI$;Q^VX zztn#LB>I{ey{%aYk1L(j3hXxejr`#~_p0pQ&b{Xp+10~&X_2b=#1b0_L_-W!xm{e!ghIMjdd{}^IH$G;h+kXYQ?2GD8+r2) zEVG6qd+&@QO1AG%4P421Jp<^$#f6OHItUvh2M=madEM#pQA(XN+GNrkD??=k?~f6U zcZOAP)f-U;mhHQbY=dqY!JzKIe#wtw)*>bdeOLr4q2?BDCwf=Pa{On^N1qv@5f*QD zio6E>?UEhzE*`x{A6|riI`{-}jnE)fqH+kIaQD%th}3EoHkkN18G;j&Vtqc~+eu57 z{3L=2>E~m>=h-E@8lec5vY!WcVqO!=5Qmv@*f>->GH&iJmfFQY~n1MDKhoV!>IY2 zmtDXPuy&o$1(b|Do1FuB4=6gt;2%BpJOuP~2OPN$uGS2fqmWt3kBPyk+wy4NGW1(9 z!ul2FD0lTSujW(RZcP6HwoMgw7=oKee{x-+n+6^stl_5Jf6GP@$J+xE&Y<$tCBC(2 zfShD=0b|X#I?~k)IPh{x4h&fcYTF0anH%I7LoQB~!M$O&437>+INgt4PC1K<~)b}_8N&}|K z(~nw*U2D=rZ^k+uQsAPn2Pcl;{^C-#2KXbme_7rH0lpLRotQ_+D-IyJ5`M*MNbiX( z&u;Q5Vuu-k$|J7Y{{@rDG#PKe1~SmsyHk)SwWMJO)D`uVVmbP*QlILCc_QZkUSr=%y$fP+|B61wSmRF$ zCcS(J6})VVE5t^Y)2?Ks>A;@BSd>H0bvYEhuG5x0g9*~gn$KV()q(j`Ttv&8=qbFd zbiykc-z6%yyiP!KHtc9ckf)dS&myJcW-?P$=a3(XiXQ82ZMuZn-Wia020N#D6kUen zDdk?(cs*H&)d+rudu_Wn!f7|LuNLVupD($G3Y#h-GSKm(Jx#ip%z<@zYq05E7ozoW zj@oLkCY(qCT9%Ht<*(WH1ODW=eQz4#-Tq_ZXUH!*+X+*sUo$%!i!u7+j=3Y4zXKyt z{n#^I&R$u#K-Gt3XK~#E@A)fCN1(XRh4C32CqXf;K#d7o8T(*28n}#Ih=J^bj0>oe z2pi@~^i#KeECb8~qg=Ktu6Zt=_8Al0eTeoQb3;@{*TJfAkLeb;#(HP^T6|pAQF<0( z#in6;E8(1b03(FxW#Y|rB0imdOI=2L*Ev89r*Q>PYBg;=Hk&G={;hpOJwSbtrAPfv zy|xKNi=@uE&(emdrKShywUnomd&tv5O?xl-g}|M+gW}3NhrUXwW{)Sr4M3~!A|E0sX&XdN}f!gDwcZ!`{D{_du3WX&Tq`}qW;u zFfF{F63(yj@T8=3AxlCj(@f>qW8&MMs~Shr=FS|pip0@=LHd)rvcFmvfz@;JM2w1ikc&Qfn9&JTTNcy_RW8 zQh7&o*mV-1wbrAJJ?b_LMddkwc_(mf+YgD07ML z*kH<~phN6slqak3Y-h?vOl-0y&U&7AIbXtH9uwwD*KVzjj0 z*m9fxTL}*erRT_PTprWJ;t+EhwT*qLEtyp}lh6CYyt~yC`MC>M}`BZGf7y~vcC@`d7 z9ay(J#e0e&~9+~Ma9ZtOK^){1iLjMq-AP`gDs+(ed_%l64rQ-Up#KVL+9o;G<$#Wcer57vw)OAo^r&q~s&!Ku)$; zgFO>{S_H=3@ZktG_)GTZgeM3z12*q1*-Igm|4Tl=_*d3I)*?`nH)K|gwU|rp$p(vp z$Ty-l2@NUsJ`Dm(O11-(f0P0+yvNn2=E-l%=C~g8dTA)f3GOXE$lh43BdTUKWc3Oy zn3tmV^KUW}ee!sR7<(Ol^OiCEjSbngbZ=Rcv`;obTOsk4%)<;shegk-9EEkl$SfN?bd*Q3F+;BD;fk2n$e6| z-fk5ya*$im!u5${e~>C116f?5!W2aR$<`A+7XR8hO}a0V4F3iP3my9j}mzYv59#`tTBB}-@?8mvJ&szZb5PtrA;@0B!bIhZ_2~@WrK&) zk8|Jj+~53x!{}JI;TG$wdf2g!xkb9#EQhw8gX9%D*amn8; zzbE~i=qjBRe+YFG%SBe}v_h^R#8}LV7FZ=Vy-G} z?h0hc(r>mqGMu7bYXa%l{qZUsy>~T9VL*pioss>aZ!}oWFQ9!zpX=W*{NCi&0~1I} zCOU)ovFS-|Haw@OzE)eVgMXDWkrTRlUf#p5T!xlLGrt z!NtP%5p{W5g@&To7iFRX%hUZqEsc_IZXhW@)MY&@Qu0MRJ50;-$Si03prls}PKZOH)wNWqY6)PXPu9r6cxc*?5 z!|=wU$+rD{dsC0LQo33qhm|F56aFjYN$Lf+c*z>M$i_$Tot4Kr1q$3|323S$ zPMrl_%eg&13I-=E8{P>G4m~ok0=~j)q~{yr-AZlOMO3dDzWptBwT_MqLv{h;X8jS= zipvwPkcm0jqbE>7TV@8YpwmOOeI6Kw*NLus*qw{Ms!ZHXbFtQpa9HQLWR3y=9G_MZ z5EYxYW)M2FFORGy+}Kh$uz|QG6xIVHp7VOpX+)}W9B*?Yy;_1-^C=d3#v%>%5WsmV zhOw!9XzUApcXrv(F?!J!v%UlLC85b(-)L{WzO=(=cb#lC@w7`zw3Qg=V(ux zDU<8@kIEfJZ}Voeo(v9hyW_X@wsK}eLptZ#kG)OXma~JL(CSH+bm{w+7N(c}DSih1 zR@2Lg966*+GxAl+$s!Ky5Fd!I>gg4EhU$0B33hn|D>3SU)6n84%~RL{k}BcdxJ(#TD|Slcm|`Mf_>i;erzy;e=!c(C0|vD4e3HC1lqOjqQJGcDDUo7|U% zO`Ig=iN@XI9mDRW!r^s&uQEsaPIbMAd(@?B58QaWP1JhKJ73+SG;$WTY?azu?v$+H zT{GOn-pX2EA>Gde#N=i!gaG@K9OkXTff0k#A&{?r^6~w!TW*@+SBUB5+QE2KfibA- zF7E#<^C@d8GWJs8|K(cm^hO*_d^=}=T!?6$bV1$on;BJLR=NEhW9y~ec&h`fU!Nij@frRA|f~`q}HotSjqr`Cc;(i42p>0U_9TMG? zq|Kvj(p@XQOTArwW?>WUT+ZOOhcsMb@6=Y><_P}SIL*%Q`QUGwqx)!YFKvVEt z%v0tDsz?S;@2Y@FA1Tk+@lNtFXVWZKoSB$C5hFYuQ8*GLK=?21FXu;i#C7f9x!JvH z%jKLm?@>&!-1Ra1XhuP~-41)zLXO4a%Qq$lZ7r6EMkEc#OC$YF`s&39kIK%i!lU*@ zT1$S!61SFSHeCNJZxiET*~{&)j)d$N)BkBB6CK98)HM;&LsZ34fAe0gyvC!n;~&Wr zd!c5faP<qP1$!!kKH++d1xjyZJfJ~*$@dgeXkXEUth8Eh1IlB+_LKrG=WP)4wz(lqoi zVolrytT*z4rvev`(indyijeb%j{%AhSElSiDafyF)sRTED;ojx#-ziRBP_5@CCia_ zaW!$FXcpeX^97~{A7y5VzlmFV;6>vtieM|X`45Gzu>^Tja7-d3jlzR)V5O9{qHl<7 zN?Yt0YB>e!wI02ReA@gLu9oDwFS`C;!J09vrV!o-)q4Pmdx<^+I>y-pUJm)nK34bv zZpJzl>w$Q}ob)O~tzbkft;Bjz$9JEvBdVr{uQmLmC{}!K4wKu{On?%}H{eg`6>$z~f_{aeWq&9Ay^n}wjH z_Sk$lgx~5D{Q$;MEcKdzUy$6i5}_nq%k4omjytRScGn4KJEic3FI&Hne449Zw@$JAN0?z|@g0H>8KHx4IpCRAE+stxdOG(`BL^y-gEwVxUAnnCnK!Hf# z>x0pk$dTDb*bQWKgfk987I^66E6E|IP|_CC__Pfqlq=|50zJ_MzA;sfh! z?Q;}{WuN7Qe!{HXG==qNs63KzR&=`AWx^}!&WS6aYc14v9SB1P<>kZHN{Hx5_z}@) z%^_sD;B96S>K}gErWDM2uG)iw)nU(?|H7YUB#xg4Ug?Br*MkLZS)3ivu+}V88tj3R zT0MrK$j@c8E((>`hkrpAi})TR78XfYZ3n_DQC{j59`{i%WXCNEupBOQ7!O#tkD=NOe6-Vs83$I)oPpOt zW5$nF=D?l}>84#nV0&uAb&<#0W<5@#=!yu73s_4YVKjqGuji49%OlCb==|j0ASTazC6B2f`B;eBsFKH=+B}7k1 z5#cmZSZ2F;ZT_AdPl_eg1@9yMBF(J&kGzXCV4O=GA-ngj#vEm@lf`5EStS$&j>sGW zJ;WC>jY^&qycm)s5aAQUHn@N|Ntd|9kv7xLnY2+tsYiNj(MTy*0>adZ7f2tm86q>F z5a%yo6hFf+<69^0z(3*c3pOEWIb|+lq5I*LZLt{_q|4N4Fo z1DhrPSo9VbDD6yKjW-sT2A#pr3msif6AXE0%p@cO=829S$oYZI!V1)m9w;FJJ=Jlv zIRVqH%`bAmveecIGF(y1)1Xe=FXH5p3y=e=2r(QK?i$DQyx@`gDN9kU2$!aZ|0W?t(=Coe8j0;*8DK!`8h9KBkI@$ zuyFxBH~gvKK1S1ba7!l^*tspp1ZSv0xGux3mM>otN3iFnwQc8E)SK}E>_d&QxQ%Q= zGr!>-dlT?(ehS+X;urgcZ2@caonzM^8tv(vBgg?g3I~h5paC$sP-|`;vl*6ysbyxs zN9voH!N?VPwoFfyAl8!^ihkz{V-m4`4nC|J>>GoXtXjfTbut}_H)6x+5PUgmj*i1G z)alX*gt%NCI)`v820`y8LVbhjmx(VO4l+teD-6kucCuJmMD1eyV$M+aFshKD)VuWS zH5aMh=*>CaG<&*7^k3R0+Ed@nv>KXrWfQHBw%TZnZc9DaBA^tB&M=lz*uu^5vy@5x zx$05M6&@!$o$`ZQ8C^wP#mVydP7Ps)t=vluXIU5zQx|sv*-LVnT1?ZDl}alZk9ly0F2nRa0|W;U<~AEd3CJwnReXQkFF}OpCM1r45Wa)509S+- zuzRIGf>1W&pKb~2T0@QbOSUSs=nZwNBcU%2adzZ*Vt z2;AdEcI*qB>112BC;LzsoTX&F_sn7$vR2yqF?*R2hR+t=nkeQO&I1J=HN^>)$JPJC z7EApK16Ys5*-4eG2w_Lqa;8S0=eddTo`|s;2gt`x` zYifQ0gypTcns|^&ljnubFfK{ndxkSCM4h&8>7jfJ<2c$D=3ROlyKS%=vB3JTx2J9c zE4A}X{&{A5+vdbL#w+!!&@GHjii4g`^cvaXL6cT3bTr;aZDH-89b$)1_QSukRHHj; z1Sm$!>gx>$ zs$Qv;m-I>d&$Y_*o07+z#2Oqa%b6j7XL0Qt&MJm2v>` zv2vv4CoDU=RNe@`5IZLQimVPylAK08cUvZL#-v)}C0no%-6DQGDUNVU*^E(wv@M6Q z%PS~yZ){&yvve3&8uLREiT4b6DK^4?bMp|bBg|Mu39k@y^n~03N(dg(a)+7;ERe@i zjmzQENy_ca7D)i*P)wQVH05f5O30>K&Z3e3bhRuwG`x zxl;z0Fxk&Dj*E5KcG1s;N>)ukg&>Z3#;urd!Sr9o;psA}44PTl^cbwJtW&0H_LrJT zW=lK7G|`(37m<#zC>ke_@}CA&@YnGaZvEVA+*E5fj+pIc=*0A4G+<1mx3pGGS&}4m zLCHPQg5prRSh!K%7;V5mDBT>ejF&AAaNEYYEey35vdg(;hLenVW)3<~n%;|OREQTk zACyFi*0vGTmk7FA3!-}Yu1c`~F78(Ogj+AiK_axi!~*jjja=zM))Ev|@^W-{!)I~s zU}o`xa96KQ+JInfr(0AWuV0Jx7jfNHPu&)qSMpWX_nEr{U?T$U2dfJf-^Z<^)tYxd zZlLGC>MU;RO&V+a2zVO)Tyqv2x<0pcB^2#Aug-=e%=(nCkPjAF-brLYe)Xh*4XU4Z z?u2CKeQJ+@Zclu!c>s?IZ&L3@++Dv;`4$CpGE-bY-!#|Ae`62nqzPA%j)Tv1HK3cS z?zZ2;80J}N>oHS_A+6R}M%a7hOB~Sqx55~o>y#z$CAcmDNKr(JE{MOHf&oo-+#>f> zK5EM&b8}-`?~}O+9V#JN8^%>skuQ1Qls8hWorKcEl%%Cj;v~vly=pF;`Up7G-pk%z z@k8s#dXz&}53{@ybd_mLMOb*tGUf{JgE9lgoYQH^dPe5by+Ry)O5cZLL|*~e*)}2G zR^hF27p=~|pc)lSZ9yxN`AwnMo&t0V5mK+ z8ZVc(Mk(^Lvy{i=tF|m_sh2v1cE}vX@!prj_k>($nQ)4~-QpSVIQxx374s$IUUP-k zx3i(_tGc%>ChNM=xiumFw0u^{3&lyRTlBp<#O~5jXQAM_h+*l+J{5${%$tIv%KNSXNCBt1zkn`!q;*b0%~wo!NMOH=v8}IBi)qlp&!k;7 zreh~Tp#|B)(O_xHO#f}DLFA*JVOURqpmQH0)uXCC9r?mGQM(JBZ-Q06!2SOZFiloh z2aViDdFE>e^HI-J?0es!XChHu`!I_E4eh6}Lmp6V2yW2!SZf@fXPVuTNxZH@7j#g@ zs({1M#20xl`}dG^lSMswq<~0=PFoTzU{#wV>7oavwUHcR7pz)CmYOY{xHy+=iB!(Yy%86qx1_NGSwY=mz_pYLI;^mOJe9Adfr?J z?PI0Mz*E7u+=bp^{`RDn&Zj)-=Hj+auEhUrD}^)eu~R8v-?P_~UuIjG$BGu1?s{i9 z5%lvFlmYXWq};e3f-E~JsN;`>u-RHWCA#FVRttr>9ly7+PLUQf#f7z0qr9@&KtfoG??fAc6TM>8oA507>cCfGj@Rp6H{y*|i|de7X>Hjy zNP22aYe7>M1NWDtK{wPXmaZ| z%?M3lvQDO^E$C+RI%!vP`=*4vykynb3vN|Z_YjoB45s%5vX6TG>I!7LuDag_Wyx(E z)&DUUOm<357$Du3+mlroxzp!(wb_w^b9dN4qEMoNxe9f5S1nF&@}lgWpkq68Mx*kSv5mfw*oPV-t3!kx4&W*8m8nBeF!G zU3Ak3L&ysn!2qhTyW|1#IWuFFQ*wOZP-|29&7PlZK-J^UEM#fzbM3jRzYVw4 z;EbT=euZ`TThJ2eR*#Qhh-l5yX=E5XWB5z)uc>#czvVXLrY!#|kD(YuVXc4fSe19f zhR*18PP2~YRk#v}Qc~CGf*wg{EOHT3oJT_=#i-q@l~>Dz^ES*4l^s*=aB9uiD6EoR zKi>Z(-K2@r)fw&&_^l20cmYDUpe-&T;&{$uJE4awziKwY18eTEcOZuA4zJeDp^{2B{jGJQ&tohcQ>g11m8{>E+-mECpHyEx=`# zeTQ$xuS))gT#COH5{8-}G`V=8rwBk}E5aqh$G*dj*0kI5CC!^@94ZP}L5l+)2Qz5K zr8}WA>a*mPa0+#A@C~FN72(1_t)m<_smD_(mOb?P6ro6J*w`ZQC2wuM#CrzH02y-k zmh?dUIXy{vuuyhOFdhDd1#&rsc)`>+rQ>R86J5mGx9Y`|1QL<>lf+&EZwu`*-p8U|k}_-5{j+0Bx*=hoPb*9&Uu*h5e80}W66giZf8 zM|Cw8z61)|FbPQTthzgB2bA5i;F<>`NS2xJ!>nPyZCh0>ng7kts{JwDgxlFrKK5Ue zXVZ?slZClJ!=9T7hTy=Cr9l-?lhz>DSm;j~en|j&mh-pc0d}quC*<;FXqf&{>KPog^(kC|!g37}PtnnsNK`n+ zq8^9lV}9ioW6ong#J1xsaX0;3@saq}l~IIX{B^@XiaW7QH3BW5>}Ko3E>id?0V19P zsWU|`P-=7i(5@78%t;KE!t_0W9iw1Yw&O6ACv(3!CZO+f{7n)GN(N9C2#o0XPICvn(>{b{Ks4%C zRdiUea(xy7epIfCHbaI(1pi@B)yh0gy(2X`dtYDZ(XD90{CQ@{Ybfwvebd4MbcnsDh z?*Q#Bx23FyjHjKTOu;mp&Qntm5YO*4E0p>2IyxBjSud7x6b}*f5;h<{6J8QdB5wdw zh!E7C(g~6o`gH0XX%cgPlM}fV`>*F|iXHC43Tvu4K0;qXHzIlSMzL>5C-9!Q8Pfjd z3wR{yNC}e=Kzf{VkMNGX7)3_hO0M<1OsXdHSDYj-B{vw%QbiOh=OQMYQ;ua|SFnLi z4cJ#KRdEq+5A$J)Azr{t3|~gbV(jhYiHF zumXKj@wKoCGcK1W(XlLPVORhzSsdVr#@!aKuziKM<2e|ckkHH$Mmy52Z$I(`%DH># zVvX0lol`J}ey@p4{D3*D@(JCIRkuWWCgYr>Id*QiWC6yQOFYM_qW2+GTOAOuk@8_= z9T7$A`%&PGuIoCR$iPImJq(3mjaxlDjj)oI>vpTLv!Ynzm&A1TdU`ESS@8*h=Q&kt zYlpZqb=i5_xJ8W)Thh6%&G&;{xIQ3;+jH(=$aRY=d>`22bQ#VN_Aa%At!iq3^|5mR z8)_Cia3Is%YSuIGpZHYPdFa<52J12Wj@xy1K9X-a!pTDI(fPnGCZv(kOe6SC$bXC% zi0LXd;~H`@$BS_Sbuq4zaSWpy_?GbqyUuMtGX%HRs)%_HcSp~g$s>&t=jghG``|{} zAEIt$9PJx1BHMv(K%~bi=$6EHfq1$vsl;s;y`D5-^_6~^bXz}|{);kBaHfW^bV0h* zRAyR*4Yi6fmE}*xGkjxLQswkhff>|obfVj$&W!H7Y=*XyHfmr)o28ZFX2>5!Ujch5 z%Y@D4Iuu|2*UTJBDsMiffzrfP1pG%~ayV|UC}K9r+K#e~`NZH1wTHeROCY^eU2p!s zHVjf`zo;?u%xEDOO6{Z1kg?+6fL5|d2ylBxrt>GPiR2az#juKUgmDLhBzbgoHytJA zv=@~YkT9CC^#4e$s^aKe(vFsyfB@22*?PAdq-inT`T%Kq@lJG=vVyrEts$z1bD9i^ zhx^x*>>xhr_DUy^^xLsfUrDYSBmZxtK;<#FUXqoJZheBZL||v+N0zdn$jkD_6-OF2 z$;PVli?&OdwZBqLB!q^&5jVvn&D0H-#GxQ(rx~#v(rk8KTmZYOqr>&bk0I=&#*I7c zwu-+r(+Vp@Uw~D~??mR{vIuiw8nj|VgWxJW&FO;RE#kNNqyU0?zle$=u7y!VY8byZ zPS^`q7q|=dB1V(m@n0byZpz_@p*=U~^7ddFoSyM|u!JQ*?nm6eI$zmiWE;pYfePs`*h#2tSA@3UA&L< zv8vrXH@a``A8rZlOkzBzi^dO6W51^rua~iFXtB;otamiWrMpsH84I*T5RTg~ z@U7g%xy5^y>&02Y-IFlPF6ZnF`LGWkwEfqs0k2jlEL;Gi?t80Z_2- zxAj(7upL_WWS?f`sdTnznd%mL*hLdcqDP@x+`rO%tZzGZ#_SWO&U< zWet{5@U5i-`z19^_6$dll1lUO)`1z~cle`gDnv&K7`s{FFQS?0N4_`dn9d{iNy_`` z@s>+eN`a2tiW-$dkk(RdB43ElQw;)siYlo_YvP1%R42Png4NVDW_)e~byRnl)kF)a z8k4KIW%+K>E1de|BNBHuFEU>wWt|U@3+-6`YjXGt%whW!o`mUUzKs2ju|zM4nLv-L zd?G_jee;Nt-C}%lxOl1X;pSIDk^mc!wU}t;vnHFT<>}b(=SFen%sW{}m_PMSGRhbZ zm44D`^}*cR;`hp=qMq{0UP+P;qNCP0s6=Gq-#fWb2b3xU`$)Ak?m>-t&EKM)%im)1#xxVn99u@dYdO+uCXl$&u-3_MLcucc^&|P1xZbcGYRw#zOT;?A7&7%0Aqri(AV@Jlz^1M-U>6(}nj) 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

    =0oY%l9pu(vE)QcWGmgw$`Y+rN_L+3bT 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ͭRf8hx69f7kCf1BVfH)= zJJ^Q-=ZaJCQ_R%6(E#pc56XFAU^4{c=vdP^=`I8-8E~=V5_VjQr_<*F8vBDdcnK#S zyaL|h^?$&h06W0G-SkJ$0dF<_=E0kcui|Y+_TXGZ19)Ime<7V^U;__> zs~QH{F^IiWnE=d37qMbOyar7KJDyJDgjfh@=+EHnGpE7R=ocS>@4>G(F@kx0@HWC* z0&m7SbU=LcgHu@pvmCxT@L62_AN>V=fP{)N!E@jRVCval(#om;`*wK=@rBdI-V(fx!Mifj_)_6W!FU zqQT_Boq)dqkH8P_GW?u@k7J&v+?T+s;1=HvUcUq02ZWWxlmr3b7U>*(Ds+(X=pggZ zK~|GQVTWD|s=)x*2hIR&0i%0Al>C1@P}UwO`ol`#0=NeSc_#NH1^MKn<>()EXb~;s z#p}qT`_Li=!4~rLTl-Otp){OEE4UwXu95M-jA77&efFPNM77V`Q4O1K>3@%Hp<^kI1Z8JpF}IT7p>r7a@Xg` zc9pwfd<}jB|3CNQxXG_*56T*dQT^d}?vL`btVVb7z{e2$il>AOc=F*WBlNYD--LG^ zaP+{jp0YQ~duT%Mvi9I@?hSGSE#^(K?$^oAm7OTB@yl27rp;sKg>tO;(hdoci4+^1O4Gm>f{aTWON-yFJ*6}>@7roCz<}i zo9i&1CDVTf_2Fq6)OAWwb}Btdbf19j@!Rk>zhZ|9-_7uM8on;UKYRRA)?kFd6$eim z9Jz25!%;<)>)~jDV;$YJkMaj8e;ch}FU-eK9?nr4SNQiVL(0485nszCYW4w`6x{z8 zZnxoQV)3P@;U15#bJ32h;amfsA6yaeB*KvaM?RWIDIC>u6&>VZ+Qt=hkjvD`CFfG>0jVN(F&hMC%jI(xF+uK z1u-@-x4xR$El`?p0;Aw)VgPmEua1FvU0?z@|pp*Q&kCj4CpisTeYMsy6x%2}{ z5l>pW4T=rl8o)n+VP*=$fCa;zDZ?yv@;K|ZuF^*yR5`JJ#YZj}g~>g}@p8^2P0pC+ z$Z69eIb~KMcbe77N%IytVcsQom~W6{=3C{6`93*penJkK-zWRcStVoshU^~urR*B_ ztLzx3m+iOVPeU{qxZhpCFuRoDcM-$?98Lw3(ICtx$i?yV<(^5ltYdLQUkQ|x)1&10 zj3hZWGeeHd%#*{jO61V2DmgH_QTEU7kiE0}WY6r)vTOEk**W_T**^QcjLd#qw$6H8 zhUa`CLvz?=H-|eO^C0kB_zwR+g7=>`4E+qPS66ZBr33I&JCUR!(OgXt=xg1;M zB!`#y$bqGyvTs?O?6pjl-IhApwY)%fEH9Vs%WGw1d5dga(Jfn649eyeJ7j425gA;5 zw`^GcsI2D(RQ;C!QuSK?qUy2KtGbu{jjuSxybJ$}YdGz>ar$*3=i_v9iXrx-l}hed zFg zuua`-e^A|Re@5M9|FF8#?iF>r-Dm2y)jw-mSL@X+tNzBni2obT)W0{e_a)EpA>Z;O z?{wu_Bev{!7%#h==gIc9D`ktzTG{OCE1TTHWTRW0tane90e79M-@QQ9>t3$vaj#Q% zxwWY~-TE{gZo>v`uKNsHTu&J`yIe7Bba~0J-sKa+y0t$U)UMHw!kHuZh#0)$!D&B; z7zE=#$D;w{-q^ASTXwjc$yU!{S9R>V44gBEtTG2JLwK_mvtcl(h(XVZK3h1mQby_ zIYg&v3@Oyqhg2HW1veVj1g|ry3K}%72-;;*7I@sWB=7;#;(+H&ivm6}E%g7e^CZG5oQBt)sI;uF;s@#&hf_*{dMxDunHxLV_a*fx{A*a5Sgm=SYb^ilJy=nG>q zqMja;9{GWJTIBa;X%TwUv~a!2ExhJW?hoHZrd%h$Ua%ExOeF7&<9a7HwI#Clfcpm5 zCoh+p6bGqF@sP@t04Yz2P?e^{tBX^#n!=Q9gZ$(oquk_bFn=V!9OQbw~wUlPKN=b&F6lH{}3Nm8Vc^N61ob)UMU3!60W?H3jdRmjIR@-Bi zlDfq_Ddo_Zgp_;7#wA}L8=LgrnAoK6&0`bwX0Zu+)7W^uiGt^;hpX_M%OKauq#b~b zpquw?>0I~bb#<0TDs+>jRJTxyvTdXwdyVAhcuQ_huqrz{N|lwJsL9CAFi6YJGfdT$ z8z*Nqm?UO(nZ;#pHjl|TFeWPF?lF<+PmYO5dv{EP_B->4RJ|E6jYt{A)5QATUttP1; z#~>lU)F?K;&Nw=6ooQt5CbO{I{pKM#=f(tQKRzZX`yKNj-FId|nR?Tk$lwT`B;F6? z(iY&^4L0SI_ktEsT|mxLNbXyV{!oJcP|E&`(xsv;T_q`HE|Og4BZ*}pl28_-iYrY~ z$CT{O3bq%agMkh>8$cOpL0&m|R|UCWm7ye8PnN`L^ar$<*lI_KuJMqlngEHYiIDJ` z1XXBthB~;qKod}1W#CuUYUEwD-q^Epw~2ejDHFGfM@?MIZx~sWL=4WsbpQ;Pk@tcYPy=^SrJ(na`__|pG_VJwajb-+#e}jhCZuVV1U0Rdz$S0; zZwe8=rWo;QN>zC`<*GcI%GGX-O&XWRego%*orX>gcN#g=Up2I^f6LIm_CH2;)p{el zs=sjwfA4~8HyEspz;{Z(;pK8@We^q4;)A67SA=;@P=e+&k^WtY6)#}b3wN1x}+PdR}#;W5X&5HIn)hk-R(JXJ#8!T`7 z8y84Bj>0tp`avtG!SA9*>Y$mtr=8q$9qSLec@}6N_rdHp6^DVTVmGirRu8NY+W`l$ z8E_ZtfdH`@h>{fpDPlR0C(8z^WywINEE*V=1p`NAUjKtKxBs6qxAz;>+-|*kUf16^ z2hV;m1iJ9Kkz*Nt=fIr;cT^Al_mlr`ApaiZ8u(`J12JqSi?&Ra1zYCJ{4FbF?iPEQ zv(;T@Z4H!}TVrJU)(n}pwM3?{$!pTqjWTh|L7A}SqKw`0ij3d)~t%)t&T%F4my*qCX69{d*(%KfI1x;2&WP!VYrKUF5)fjAh*3Niuft95LT( zDQ0`^#AKhl81D-f!+i;2urEi{%7(kW1WFSqr$*y1|}n}&IOj7bnSsB;KX}8 z1<=`!6WHSvcKit6xdPtgH{XCiXav{*cEdNgo)~bf;;VVX)B(H^@cQoMJ{SjB0|Dov zW8}amM8@BV25<`gGvKV6PGt_T<8CIQ_h84p*l`{^&PRZBIzAoj0)ahGffvqkd=7ld z_lU*4*Z{WSYcFWnh7Lx^(&3H4*8u!(Dtu-N-z~1EdHoC^ zq+A64TbuYNuW?V_HY8CZCLhs8K3hrRh8%2Cv@*AApYl)l51!dXJEA&Cx-qo8PRs zknKe>n*d5d7r>62_h_Y3^%u#wZs`xo{tIROgQ7p&x(9_HucJUJ`bQ4gYB8EX6&Yg# z8Cx6ZLL2BOo8E*ju@#MA7uv)@a`qEsxA&5}K1}}n9A>=-{zLXZdOyL|aN@;fNIm$EmYeGH=$>?CJCKy{r&_c%}0DXSk|=HJI?20ze*^#2d^RNw9RQO4r$ zEO?jWn~Kpr>p7jobNu!Je$Hm}&|)4#qq|C-Jj7b1%jgdeqJvyQ2f3d%dXYAI9~#+t>f~ND zp}UC%s~>0;_n>z?f)?>IwevBp^*i(k)?k1;{(@oyqZJm8%8hSud`S$5ZUVM7s>VqXwQPcsk(egJ+2HccKOzM)Np}-f@NA@;s|`K0q=1 z53Tk$EaXW?e?hU~D>Yr5A?_dJ7=Gy1kMsT!*2P>wm%1Na>b%&&>5fl<@I=9r2v0gZ zIq($0Qvq8YT&;3Y)h+u~8)ctrgr_MTlwGRRvO{%QwyU3$ZJPIGtL7USHuwYZ7b^!Qq{zMr znX-3czU-b@D!VMIWv4}xY`5r?5sUS*b<#H3GU6w2?y5>JC>*jwT z9rM4F_W9fadfwmo48Py7=9J^eDG;2qNBdaCX&rkGEoH8|fag9eMt@jpEn6+u$nbJ+ z8Cnq{gDYZWgH^Jux5|(K>pbb>el5M$)zV|#EM3;!vd(&wbXf0_HtXZkYIRYXt)7-f ztM{Z~#kZ>Z6?#?O^1py4^C3Jh!~K{Wr*&}B742g!YajUAE>6KaR+`FIo0&4S%2GDk z*~@^vyYx8(NRLB=bUVh&I!CQ^I_jjuu~6EaDx}q^L7E*qRZWf?R1JLQ(PzS8a%Dy{A@(&C;h&F-1f=$YeL!95 zHlitaJEAFby;oD>`h=#)WwSQ^~*67s*&ZBq>f1mbcIueKm1P*{50nG2P zWe{7|doaiGoG9zO=1aS`wY2&;OS7++H2MZfyPB zby0Aox*)holNZ!ukP|d)m>qb)Fe~t^QAWUHM(O@<8m0OF+feKGr-9a2Z=m%V#mo5m zSU7zl0u3gT7=R(r&)>SSr5!Yfno2|145tIJddweqnM&H>4SI^^$_P zAjyl1l-#%kRd!sODl0Bmof%uINsp~JNR8<0;Gu65?p0>zTXBhN@PTsd*OC6t8#;c?>fxQoj^Q0ijO7fB% zB`3*4vXcTND>+;;ljBtB$*C%BQnorJsaTVgSZk1w*kKr#u+b9 zocxe+Q1WZWfk|H)1t$Cs^oD`)qfoS{^KcwVCFj)A57LMMXatqKFHR@t$l&^arm19P zO_#K+#geMCkz}2-Be0_)f;-JjN(!JKL^hNc!o3ShoBYIX5l}`%_jfPVf{m% zp(N!`l7#&E5|_V1VhZdfs=!Sm3;ZOaAWXsv;v}>{s|qg2RR!jktNrtvG(LH~23~n1 zh90?h7`o>^Xy}^rilJ-v7ly7`zZtq_>J42pMxm@pQgom_U=Y4_@HK+UT>Q`Dnk(sA zauI9ai&=kPI#wdkV!}$7NJy!z1edLmz%nlhC<_w5vMBK_OBU}kop_d&sN75I)vl%8 znzbccHO?i+G>*j&XdH@P);JV?uCXup&A>iiZ{UzOic9bvhif|+$VUeQwFRRZP&T|N zWz6|2$UUpL{$6b?{x#f#qGq0W*DM#$8awf*aTT{3UvaGo6PKEJSyPiPPBn$%SW~02 ztLap&svcI^R3BEath%VSs(MjnRq-#iRrzmft1`XDs&o|R@$(RV4#U?2lyyLrCA2|O zfsAteuSS2UCHJc*_i7^lYaS!c&C|uHndg8sTZ?^*qpWUmmsKqRV$%{SD_fGqswGEO zG*^fvi#e7y56a@^1G2E`f-GoyUKTWbCJX9+RV}F1D^M?}(W_76=N`B=f(}pzO7S}z zzf<6jY~VSl&E)^B;crmO^o`?W+TaYCGPp=44_b@GpcA@=my90_m9c|~ zVm_EFW`osYvXOgnZrm;g8}AbJhQ~y+{yi}m_+AYAxvJSWiUW;|&0rmz^`L}!XSI;~ zw$ldIk^8~B2435Z>;c&X|7LQ)t>nNX24c8r!g%A*1#F~fJi{c-cH3To2|C< zLuG-%$R!5ie{e$n8vMqINq-YN@N)pP5$h_BdH9@y&yoFTP#dU!e!glL{%x#5*uffz zUF5)f*oU!C5Rpvi)Dyu>#P&sCC5>wh-~@0u7U+0QkPr0$et76^zVj^K{}lYl@38?4 z!`IVA?#)qIhm*0MI)FD2UbhkQe}1}jFMDA2qyHR2e>np8F>oB504I$Z=qE7on?WZh z9;dP6%vvTRfq;SbES>Bu!96ns?%?$!9Nz)o@ZI0RAF>h7Hc&Z;{y>})@mJXg<$<5} za4tIvKYSK<-lo5tgZmzEFSr2iGhh-thCzQS6XN-tfUKAlVaG$k=oP7)6w3gPUZvox z{OFPAIex-tKY*X42Y>6gq6HFXE&fKr>w}+;a4tVh{S!Wm^YCAU>jCf}xC|Zw4+GpH z!TL)NAtuV+oM&dEg)C>Hj2$nBa1_V z+*<#j=npf%GT;EbK^U2`azBm?c5vjAv6itmpq4DY32mUA?6DhtU_BY!5c|*tkw^I@lwFDLQBT<|l-Y^W(o0j=h%T`etzb90 z#1WdvS@P%0G?(Z2_W{-U9nk+jxZQ?dh{bo*&DZEbpONc+%({aQ$aUW%7B|phUS}`L zYm!O%`IKFX?omY(QSOJ)Lb>Z`Hhn~X6U|k*AI5%kiIeCB_tABpkgHhv5Z*jQttu@* z!R5bjyA6yQaBJ{$BEHR|$yveY43{@Np>V`eekvvED8GO%sjS1OqWpTwZl&BVy6yn2 zV3>S;H=4vzYU6H(k*f?RFZ1dXBJ(5pJNLr44T=qaf`5ZgfYQWYB^J*Ui>HXioe5OduRmzK_mDB==pRMiVceYAA>i+i{L5R#bdOKE8M^L5<201=u+od7jrjjLC&H- zoJN1Ri?(qmZS({>$Z`709q1rO=_^NQ8;6O-L1J-$KC+K*?4g8R3@ST`?sn>9J8g3W z{#)S8LHrq3Oc-v!HG|P1@BuM~cM85OgwqDTwQ%|3PbfSw_>l}p2DP3GPZ2y7M86)c zHhM-6JVUI`*@Y@}3~TP?-8B?5rPY2;5Bibbtp7hKb?`pJ>x(nUw;0+UV939R_h+!@ z6nfVh$MyWDloF&_g^JR-ksSKOc$Y#@K*<{)! zgQkPB!E}cVm>!jWlY6Dt97T-TeFF>ckDdbHNhH<#aXsa_Lku(!7?-@N(QGU%EoDFvSC`b3`{GM{^^y{ zH@!i6rguvB^!2iC`iOK)KP>Ij?vd7M*Q9ys8`3oGD`}YaJK%}n3a0AiLryQseNY}* ziT^h6b3C+yoNFmL&wMVm%ruj2vu4WXxyxj5o}H|p?}onOFMaF}>RA{o-HVcC-J(qC zT%0HEi%X?#ajmp2ZjorNO3H>TIf{)}~piZF;22W>_j#?w7Kar=`^TsuWwlCPmhtOQF@TQm}%%Vk=nA zv!w9-2~H^&T*>|2@So#07v^`)V@*VF|eI4b*`(W1}&z_ z%||NSf~DL&O3K_5rNlj5irw?1(7j9w-0LOJy;GIrHmK6M?N(*E-l@)Ty{t}id0DMp z`tx64QRV4=ws1pNssN(~U zYhnW~X=40e)I|Gzs*dvgSsmr0S4Vk|;wgA|T!9=5r5?h_b(r#Wact#%BeqoYS$PQa z-H`E85IRTl!Ym~x%uaOSE|MAUBN^erk`^8%+K41ciO7)T@B&q0c%>>nyhR-w)~AjR z8_`6D9@9jG+^-1>c|j8z{D~$s=x23kpk5ssFp4MOxCh=t5wyif+F%s<7HH%(DWsI~ zSrM=EqRb^bYKCM+FOl?UThYciOKOa#B*z3wQcQ#-#>7i}Oq#^SQB6?fMNMGjbDDsNPc#8xKWPF&_3E1l(W@VWTe&CB{^-$lI6blCTc8${ z^S45dIdSAY@g|ZMKUGo_7D{r0wIn7wN_?Wb#3lMkY+{&1C&o%tVyZ+W=15p#sVXF~ zK^2tHtqw@oqV|hFtnrDvPvaf;ti~($W3^ZGPin6yz1k~s6c5957d*S;$^8@P2cQvD zf+CQUM9z`S_5T#^|Bz}S@u_nq7A+=PyILZ(Yb8SKEn(VV3DrhRur^tOv{@3MEmrwy z>r_6e>(pMU!)lL|Lu$8_^J>@RXVfl9AE{jue^k39=+!RqAWpA-5booNv<0{Z;A%@D z2A~w=q;kzQ4gDdV^#>VTcg#e8$eJNxS&JnkYo!F~oFq`^A^tjl@zaHik1j#Hbs6HR zD-?HKjksoYsMcl;shl$psGTzJRXb!nt+G%5P-U1p zD&Z^y8JXlfI<$`*^8Z}&-#qk(eDsHW^oN4w;#II(JPOu|dx5vO6@-XOL5!>|(28?G zo;Vg%ihV(wtj^ykw)y*1HhFietaGocta3h3S!e&KvexNU)>$A^uQ~_kK78B+UuPD% zKPUsaaHql@n@{dri2hJa{#{D`S2k8$%4W!#vPI%lW-X584q{*KE_UTSi?lpKY|E2m zWw}nQ%FAR$S+iJ{t(T=`dt`CxSy@>6q%16XUltbqAd3q1szn7LU$43ouASM`1AMLc zS_O(gR-Q-_+z}<@o@MY?kbhTm{k7ImZ0aV8b=_>Ss#_w<>ukib&PkTmdCHQyU|Ccb zD+}t$}#vv#LUuRSGGYp%)E>i1+?)%P;JlB<{%WD@0iIf9>C3eW>V z1Dxd`4`}f_7Ve-bu07Xq4~#nU-$wGkX6}Q~YAkcxCdr((IWntlsmyG%mFaD3WLldK z+D4d6YD*G}wp^LeRwZM(!L51QRxxcoF2*engEz&b=^HU?{8P*txS|U7;-|77s~yyU zB9K|m`iDyD0B+v~MgM`n75)zPpseE>d^b5*ud$f-S%_KRY%%FuD#m@Q#IVmr4Ep>< z-A8Bdqmuh5yq6#M4uXR;xQjUZ5`*C9;Ac9a{w9?BBKLwOIF-F%xx`!1fTG|IXkiad zJMo8id5_5aKKR$O24W*Q@Fq0_`xr0<%w=#{237-3cAFVsH`C!ZQ^A{YWOFay*#*wg z@SbK6_!#_v^M3-pY^tX%f;wVd1aC$Yb%4)7o#g-cYu^w52KYCz24J(WriC1Mo1m?L z9fmZfu}pTRGQeQRZtU1&#{|FwFxc;Y?|}dC+uwm+`uVsO ze=9iVbkG;O*awBbUhq1?y8_O6Bj`Unc@E2N)=>@2hJLzP165Nv%dXgWXq&`l(0>0q8)W`8Zq?>$K!7xye9x zZR9ax^7ypTN%FJU@ti+kAbh?Qor21JVJ{#SFTMyq0$)hoR`k#vj7NMFei;1$Ub|DQ zLAjgu2cNmZ_2BJ1ynYm115beK;2H27pjeVabQU9YiAkduEkCqJ3kf2LN@tBm4ap1+ ze|8jI1mpkp0$RlzH#Ha?e~QE3Kzv<;k1ODu^$_~sBb4_TxWz@2Cb|6|KHk3pZh&{e zhu~8{b<4lUvEODMI*0@JNeyLhOg4H5b@DrP@&^_B2M+$BtN^%Oe^Bm)q1+o}F<1qZ zdy)o$ShNT&8Co{i#+B!?R-g^kk)tcmX6+zX>>*#>K)${iZDI%6oN`Z&ljsHK$>FYH z(m%;%zaXFd9q9iH%Dp-CnEN*rdz8I7^Z2$kS^64yec|MptmK&gCb#A3h|L`vCpneKNmy$jAljFTk>B{{$l;bV@ z%|B|(Z!#9nnQ$(H(;iL_{0V|5hEkNhC|Q)BkN#0g`Bju(Px&pByAExlkLIw6EPsTi zae&&mJNRrkDtId!F^g@V-3bj#Nv6@9XyK`^Au}Ao?wsCW9Sc$uqWnW+Qt>^ zxQrbSV#fpM5BH;kDC;mT&^GQR>%ND<>>LBh8Q4!#%3YLxl2&vQ))Tiuv4N4B`W1N( zyat{l7Ecn3$B4zlw2LcfF_**(j$q1rJZ=mPKWMzcIcA32FecL!R`5%kJ~w9oz2$zF82 z-L#FJ=pZ}jE8EdQMp(bK6|HUybuvsWhFG7oiFX_M#d=B_pw{~6A3WWdo~)>voG0K{ zpwz*e3?+)pe8~dt37ihhI5lWE6`@NVWIf70^vd06F*|6V+tA0h&`*YG8$+y(*@Q+m zNMG4NUs+F`44|L((Jp%V*Nw;Pu(*?2YA3R-Hx;}Oq*?VJX;N|LA(j3nK7{kdSq%4c z;RnZOb4r}Ssdh4_*)g1A4aUld!7SNgY$-#gcCyjTRo0vP%D|XV=^Gm@y(_`lhW!UvZXoGd!hZW}vjs442kf zandp?MVe-1N#pDSX_#Fubv#3;X7)O%o;@g)vv*1PtP@f;>ynhrd|rxXek_GEe*|a` z+@D3kKbCSzup$OFTPRBm5QaMQns{KN|&}v@zV8DxO9i)FS$eVmfSBni=UP3#UF}p z@eh)net&z2lllsH`iPT!#O7+S$ zQn}JoDr^F!%qCn)ZQ`WFCRK`TbyCQ^bMtMhCD*o9a%}rWXEP$1Hb*66<$aR2@)^-u ze;}#W-%E-WcjrcjQScn6*881l2WyFe3sXK<_&KiQZ>`wWgnbRG4W)MVWT~=WAm#Q} zQtIF!#g1-hEPhhp7%KTr(UR+wBsor*qC<J_cyR!MO@B1sMxB*Ecn ziMM}W;_SYcxYhbmtYYk5!?Xn6Bko*w^F;puT^{hek#}NCEuUAdQAzoliBht5jug6B zNQ_ko}Hwb)XLZKWIwJ;q9&=S<1*S|U0x zTgmixmUM3q(Rv3+s!zD2_{2$)k5&?WawOiTRN{Qn=OeM>Inxy+L6m5XD zqy#ufa)6s82Kq`uV2H#8#z<^nvP1{!Br332A_D6qETB_D0)`~Wf4?fw|8AAP-xDf7 z-*;7hKHsYRy!9$SuTd!b!cM}ui|N*eVCMND)IX@?bqRmZ4`i;%XX(L)k{U8el0)W6 zV(4;-54Drn(6tg1<}FcSK@u4jDdAy>5*C&zAtb25BuIgw9pWE4D83>4RNf(HRi43* zt2~0<5s$!cRUQF)m50Ax<>{waDO%Jq_(qs&^@q_8!ifPW1qJ*~$KTQ-$p0hMk`OsT zVxwkDH1`gUjIx#RC}#Xkd&M>K zjB0JfHCYq>wyX*JkE{vRtJa2qV7=-BJ|Bi>OC+gS6#W2Hf+CO&kTwK~MPlQa_s5w_ zc>Ht;iC-we304xAU@!g&uHu*AE4~RK;++s9UJ0qYtUkxv^sIrmWjQ#Nmi%!i*4#oS($Q| zSf@N9E0W(5tHf`_D&bGDj^{3NaeBE6?p^S$PoN&)s|H0t2X6|z(OUAZG_HMTkbh^Y z#64@QxawxeTJ|V8>#W2{XD<#qSFzXm%4#ZZl`dXv&|<80#lnMv#ZuQROS87i;;fUh zDDz=iknx5rO#inm(*7xnQkgx2JK)|1Ur!4C5tOGA1CS09;HHU5fR5ZRhx|W}=THac9~GIS;m$h z5%cm(VpjHwn3sMbV~UwQ7jbt#up6#{Ec8J5DnUL-&nEAKI}C2$BKS+;uYkXbHTX4L zgRfV~6zXi`LpC?58=C0s>$#}DkH&T{ zcot_rM(p^3iq|s;>t!ok-Nd*al!9!KTtFWvrVjAgy%K(St?F2V-$?$|Ea)ucpdE&y z=^RG@r-KDx1#kc!fX>!Qqw1srJNR)&H`u`dd>TB#N$`Cd-?upaJJ8EUxY|H9C>-kF_TgYO~-?_u)Qr(!@cC5RSaCXIR_uwtO&#Jj;8(BU>v z$r~teLo1&RgX4VnD!;qI@4o@RF)?6GEirBc$lK z%!nJzy{KxVa`}0+X=m z40sDT31i36wSYnXSTZQ#bq5&Xv$K5X8Sn}C9v$TmX`z10;nlU%4vBLR{<^|zi=SMM zlIc|ASoqX5DLDuZgCpP=AhiFdiJUS(6B&c}J%vfxeDo0PP$mTz81ye>0s?%2SX`ih zoA-%*i_gE}dp}F%M1_>ZFhC|q}fQ{W6Z2krsq!F}L< za0y%n4;i!0gt~cbE^9Tg<2r5hdJL1+eAZFWE}kY9PgB6t#6o#q&eLB@*+%qGe2(QK ze`4!=5dGl}`X8JV;M3eqxfj4iaEs>(udjkf!8JfrznL68&G9+#qM8fV<4782bI*>I zBv3wFL`@`-EJL5@C842Re1zd2^5qZTlLCBB!RIjI>v58GNL1HC{F}^Ij1<4F0)^{w zaEt3HUOx+7055@8!RvtV-b~m&PH zHL{%B^#^4=$nEz8S;Koj5J85RNXDGO+K4R)1FTBf9S&#AGHmG<%7R(|Ovm_UFfYTGcV7Ow@ zBT~^LbZ8(2WbviAS`9}%94(Z)j`I8EJv#2Ybe^}#K;I%meS?hrpC|;cp(MPD)wk}$ z@iHtg0p-~!|7`=IV!y%n=s}#>;Io0x1wKD`!r_Rgd@bc?Q+@&Emr@1Ql;1%4t$5o- zxdT+uFwJ5&+Q%_81LY1Bk5Y|q&~&~cm;aNT`tLm`%IjM;{6?L82fkzt#wV=7c%O9# z@30@{En@Koxvp|Q(3e6{yDAXSG0n^*I;}Pr_zo70hI226+8g$B^GCC z7pGW*aS|=&IQOhMMx7i+e>h0nI6xcShyJh^J9cBoE_9Hc+(&0Sx&H`tvK5tKm{@Ga zf=!e#NaQx+;Rd{2Pb(k5hFka&KBZeL{L0XCFE|ZO&@PU0f0RS?k^N{fd(bO)u@+

    * Color profiles may be configured by placing a property-file * {@code com/twelvemonkeys/imageio/color/icc_profiles.properties} - * on the classpath, specifying the full path to the profile. + * on the classpath, specifying the full path to the profiles. * ICC color profiles are probably already present on your system, or * can be downloaded from * ICC, @@ -342,7 +342,7 @@ public final class ColorSpaces { try { return ICC_Profile.getInstance(profilePath); } - catch (IOException ignore) { + catch (SecurityException | IOException ignore) { if (DEBUG) { ignore.printStackTrace(); } From fd4745f6a663bcb197c01039ac8013dd8618eb5c Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Mon, 27 Jul 2015 15:07:26 +0200 Subject: [PATCH 070/182] TMI-156: Now correctly interprets alpha in TGA format + bonus thumbnail & metadata fixes. --- .../imageio/plugins/tga/TGA.java | 2 + .../imageio/plugins/tga/TGAExtensions.java | 187 ++++++++++++++++ .../imageio/plugins/tga/TGAImageReader.java | 210 +++++++++++++++--- .../plugins/tga/TGAImageReaderSpi.java | 12 +- .../imageio/plugins/tga/TGAMetadata.java | 142 +++++++++--- 5 files changed, 484 insertions(+), 69 deletions(-) create mode 100644 imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAExtensions.java diff --git a/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGA.java b/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGA.java index e845fcb0..116ec2df 100755 --- a/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGA.java +++ b/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGA.java @@ -29,6 +29,8 @@ package com.twelvemonkeys.imageio.plugins.tga; interface TGA { + byte[] MAGIC = {'T', 'R', 'U', 'E', 'V', 'I', 'S', 'I', 'O', 'N', '-', 'X', 'F', 'I', 'L', 'E', '.', 0}; + /** Fixed header size: 18.*/ int HEADER_SIZE = 18; diff --git a/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAExtensions.java b/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAExtensions.java new file mode 100644 index 00000000..ad806de9 --- /dev/null +++ b/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAExtensions.java @@ -0,0 +1,187 @@ +package com.twelvemonkeys.imageio.plugins.tga; + +import javax.imageio.IIOException; +import javax.imageio.stream.ImageInputStream; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.util.Calendar; + +/** + * TGAExtensions. + * + * @author Harald Kuhr + * @author last modified by $Author: harald.kuhr$ + * @version $Id: TGAExtensions.java,v 1.0 27/07/15 harald.kuhr Exp$ + */ +final class TGAExtensions { + public static final int EXT_AREA_SIZE = 495; + + private String authorName; + private String authorComments; + + private Calendar creationDate; + private String jobId; + + private String softwareId; + private String softwareVersion; + + private int backgroundColor; + private double pixelAspectRatio; + private double gamma; + + private long colorCorrectionOffset; + private long postageStampOffset; + private long scanLineOffset; + + private int attributeType; + + private TGAExtensions() { + } + + static TGAExtensions read(final ImageInputStream stream) throws IOException { + int extSize = stream.readUnsignedShort(); + + // Should always be 495 for version 2.0, no newer version exists... + if (extSize < EXT_AREA_SIZE) { + throw new IIOException(String.format("TGA Extension Area size less than %d: %d", EXT_AREA_SIZE, extSize)); + } + + TGAExtensions extensions = new TGAExtensions(); + extensions.authorName = readString(stream, 41);; + extensions.authorComments = readString(stream, 324); + extensions.creationDate = readDate(stream); + extensions.jobId = readString(stream, 41); + + stream.skipBytes(6); // Job time, 3 shorts, hours/minutes/seconds elapsed + + extensions.softwareId = readString(stream, 41); + + // Software version (* 100) short + single byte ASCII (ie. 101 'b' for 1.01b) + int softwareVersion = stream.readUnsignedShort(); + int softwareLetter = stream.readByte(); + + extensions.softwareVersion = softwareVersion != 0 && softwareLetter != ' ' + ? String.format("%d.%d%d", softwareVersion / 100, softwareVersion % 100, softwareLetter).trim() + : null; + + extensions.backgroundColor = stream.readInt(); // ARGB + + extensions.pixelAspectRatio = readRational(stream); + extensions.gamma = readRational(stream); + + extensions.colorCorrectionOffset = stream.readUnsignedInt(); + extensions.postageStampOffset = stream.readUnsignedInt(); + extensions.scanLineOffset = stream.readUnsignedInt(); + + // Offset 494 specifies Attribute type: + // 0: no Alpha data included (bits 3-0 of field 5.6 should also be set to zero) + // 1: undefined data in the Alpha field, can be ignored + // 2: undefined data in the Alpha field, but should be retained + // 3: useful Alpha channel data is present + // 4: pre-multiplied Alpha (see description below) + // 5 -127: RESERVED + // 128-255: Un-assigned + extensions.attributeType = stream.readUnsignedByte(); + + return extensions; + } + + private static double readRational(final ImageInputStream stream) throws IOException { + int numerator = stream.readUnsignedShort(); + int denominator = stream.readUnsignedShort(); + + return denominator != 0 ? numerator / (double) denominator : 1; + } + + private static Calendar readDate(final ImageInputStream stream) throws IOException { + Calendar calendar = Calendar.getInstance(); + calendar.clear(); + + int month = stream.readUnsignedShort(); + int date = stream.readUnsignedShort(); + int year = stream.readUnsignedShort(); + + int hourOfDay = stream.readUnsignedShort(); + int minute = stream.readUnsignedShort(); + int second = stream.readUnsignedShort(); + + // Unused + if (month == 0 && year == 0 && date == 0 && hourOfDay == 0 && minute == 0 && second == 0) { + return null; + } + + calendar.set(year, month - 1, date, hourOfDay, minute, second); + + return calendar; + } + + private static String readString(final ImageInputStream stream, final int maxLength) throws IOException { + byte[] data = new byte[maxLength]; + stream.readFully(data); + + return asZeroTerminatedASCIIString(data); + } + + private static String asZeroTerminatedASCIIString(final byte[] data) { + int len = data.length; + + for (int i = 0; i < data.length; i++) { + if (data[i] == 0) { + len = i; + } + } + + return new String(data, 0, len, StandardCharsets.US_ASCII); + } + + public boolean hasAlpha() { + switch (attributeType) { + case 3: + case 4: + return true; + default: + return false; + } + } + + public boolean isAlphaPremultiplied() { + switch (attributeType) { + case 4: + return true; + default: + return false; + } + } + + public long getThumbnailOffset() { + return postageStampOffset; + } + + public String getAuthorName() { + return authorName; + } + + public String getAuthorComments() { + return authorComments; + } + + public Calendar getCreationDate() { + return creationDate; + } + + public String getSoftware() { + return softwareId; + } + + public String getSoftwareVersion() { + return softwareVersion; + } + + public double getPixelAspectRatio() { + return pixelAspectRatio; + } + + public int getBackgroundColor() { + return backgroundColor; + } +} diff --git a/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAImageReader.java b/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAImageReader.java index 5465ed03..bceccb8b 100755 --- a/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAImageReader.java +++ b/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAImageReader.java @@ -33,6 +33,7 @@ import com.twelvemonkeys.imageio.util.IIOUtil; import com.twelvemonkeys.imageio.util.ImageTypeSpecifiers; import com.twelvemonkeys.io.LittleEndianDataInputStream; import com.twelvemonkeys.io.enc.DecoderStream; +import com.twelvemonkeys.lang.Validate; import com.twelvemonkeys.xml.XMLSerializer; import javax.imageio.IIOException; @@ -51,6 +52,7 @@ import java.io.File; import java.io.IOException; import java.nio.ByteOrder; import java.util.ArrayList; +import java.util.Arrays; import java.util.Iterator; import java.util.List; @@ -59,6 +61,7 @@ public final class TGAImageReader extends ImageReaderBase { // http://www.gamers.org/dEngine/quake3/TGA.txt private TGAHeader header; + private TGAExtensions extensions; protected TGAImageReader(final ImageReaderSpi provider) { super(provider); @@ -67,6 +70,7 @@ public final class TGAImageReader extends ImageReaderBase { @Override protected void resetMembers() { header = null; + extensions = null; } @Override @@ -89,7 +93,7 @@ public final class TGAImageReader extends ImageReaderBase { public Iterator getImageTypes(final int imageIndex) throws IOException { ImageTypeSpecifier rawType = getRawImageType(imageIndex); - List specifiers = new ArrayList(); + List specifiers = new ArrayList<>(); // TODO: Implement specifiers.add(rawType); @@ -110,19 +114,29 @@ public final class TGAImageReader extends ImageReaderBase { return ImageTypeSpecifiers.createFromIndexColorModel(header.getColorMap()); case TGA.IMAGETYPE_MONOCHROME: case TGA.IMAGETYPE_MONOCHROME_RLE: - return ImageTypeSpecifiers.createGrayscale(1, DataBuffer.TYPE_BYTE); + return ImageTypeSpecifiers.createGrayscale(8, DataBuffer.TYPE_BYTE); case TGA.IMAGETYPE_TRUECOLOR: case TGA.IMAGETYPE_TRUECOLOR_RLE: ColorSpace sRGB = ColorSpace.getInstance(ColorSpace.CS_sRGB); + boolean hasAlpha = header.getAttributeBits() > 0 && extensions != null && extensions.hasAlpha(); + boolean isAlphaPremultiplied = extensions != null && extensions.isAlphaPremultiplied(); + switch (header.getPixelDepth()) { case 16: + if (hasAlpha) { + // USHORT_1555_ARGB... + return ImageTypeSpecifiers.createPacked(sRGB, 0x7C00, 0x03E0, 0x001F, 0x8000, DataBuffer.TYPE_USHORT, isAlphaPremultiplied); + } + // Default mask out alpha return ImageTypeSpecifiers.createFromBufferedImageType(BufferedImage.TYPE_USHORT_555_RGB); case 24: return ImageTypeSpecifiers.createFromBufferedImageType(BufferedImage.TYPE_3BYTE_BGR); case 32: - // 4BYTE_BGRA... - return ImageTypeSpecifiers.createInterleaved(sRGB, new int[] {2, 1, 0, 3}, DataBuffer.TYPE_BYTE, true, false); + // 4BYTE_BGRX... + // Can't mask out alpha (efficiently) for 4BYTE, so we'll ignore it while reading instead, + // if hasAlpha is false + return ImageTypeSpecifiers.createInterleaved(sRGB, new int[] {2, 1, 0, 3}, DataBuffer.TYPE_BYTE, true, isAlphaPremultiplied); default: throw new IIOException("Unknown pixel depth for truecolor: " + header.getPixelDepth()); } @@ -166,31 +180,32 @@ public final class TGAImageReader extends ImageReaderBase { DataInput input; if (imageType == TGA.IMAGETYPE_COLORMAPPED_RLE || imageType == TGA.IMAGETYPE_TRUECOLOR_RLE || imageType == TGA.IMAGETYPE_MONOCHROME_RLE) { input = new LittleEndianDataInputStream(new DecoderStream(IIOUtil.createStreamAdapter(imageInput), new RLEDecoder(header.getPixelDepth()))); - } else { + } + else { input = imageInput; } for (int y = 0; y < height; y++) { switch (header.getPixelDepth()) { - case 8: - case 24: - case 32: - byte[] rowDataByte = ((DataBufferByte) rowRaster.getDataBuffer()).getData(); - readRowByte(input, height, srcRegion, header.getOrigin(), xSub, ySub, rowDataByte, destRaster, clippedRow, y); - break; - case 16: - short[] rowDataUShort = ((DataBufferUShort) rowRaster.getDataBuffer()).getData(); - readRowUShort(input, height, srcRegion, header.getOrigin(), xSub, ySub, rowDataUShort, destRaster, clippedRow, y); - break; - default: - throw new AssertionError("Unsupported pixel depth: " + header.getPixelDepth()); - } - - processImageProgress(100f * y / height); - - if (height - 1 - y < srcRegion.y) { + case 8: + case 24: + case 32: + byte[] rowDataByte = ((DataBufferByte) rowRaster.getDataBuffer()).getData(); + readRowByte(input, height, srcRegion, header.getOrigin(), xSub, ySub, rowDataByte, destRaster, clippedRow, y); break; - } + case 16: + short[] rowDataUShort = ((DataBufferUShort) rowRaster.getDataBuffer()).getData(); + readRowUShort(input, height, srcRegion, header.getOrigin(), xSub, ySub, rowDataUShort, destRaster, clippedRow, y); + break; + default: + throw new AssertionError("Unsupported pixel depth: " + header.getPixelDepth()); + } + + processImageProgress(100f * y / height); + + if (height - 1 - y < srcRegion.y) { + break; + } if (abortRequested()) { processReadAborted(); @@ -212,11 +227,11 @@ public final class TGAImageReader extends ImageReaderBase { return; } - input.readFully(rowDataByte, 0, rowDataByte.length); - if (srcChannel.getNumBands() == 4) { - invertAlpha(rowDataByte); + if (srcChannel.getNumBands() == 4 && (header.getAttributeBits() == 0 || extensions != null && !extensions.hasAlpha())) { + // Remove the alpha channel (make pixels opaque) if there are no "attribute bits" (alpha bits) + removeAlpha32(rowDataByte); } // Subsample horizontal @@ -240,9 +255,9 @@ public final class TGAImageReader extends ImageReaderBase { } } - private void invertAlpha(final byte[] rowDataByte) { - for (int i = 3; i < rowDataByte.length; i += 4) { - rowDataByte[i] = (byte) (0xFF - rowDataByte[i]); + private void removeAlpha32(final byte[] rowData) { + for (int i = 3; i < rowData.length; i += 4) { + rowData[i] = (byte) 0xFF; } } @@ -313,21 +328,154 @@ public final class TGAImageReader extends ImageReaderBase { private void readHeader() throws IOException { if (header == null) { imageInput.setByteOrder(ByteOrder.LITTLE_ENDIAN); + + // Read header header = TGAHeader.read(imageInput); // System.err.println("header: " + header); imageInput.flushBefore(imageInput.getStreamPosition()); + + // Read footer, if 2.0 format (ends with TRUEVISION-XFILE\0) + skipToEnd(imageInput); + imageInput.seek(imageInput.getStreamPosition() - 26); + + long extOffset = imageInput.readInt(); + /*long devOffset = */imageInput.readInt(); // Ignored for now + + byte[] magic = new byte[18]; + imageInput.readFully(magic); + + if (Arrays.equals(magic, TGA.MAGIC)) { + if (extOffset > 0) { + imageInput.seek(extOffset); + extensions = TGAExtensions.read(imageInput); + } + } } imageInput.seek(imageInput.getFlushedPosition()); } - @Override public IIOMetadata getImageMetadata(final int imageIndex) throws IOException { + // TODO: Candidate util method + private static void skipToEnd(final ImageInputStream stream) throws IOException { + if (stream.length() > 0) { + // Seek to end of file + stream.seek(stream.length()); + } + else { + // Skip to end + long lastGood = stream.getStreamPosition(); + + while (stream.read() != -1) { + lastGood = stream.getStreamPosition(); + stream.skipBytes(1024); + } + + stream.seek(lastGood); + + while (true) { + if (stream.read() == -1) { + break; + } + // Just continue reading to EOF... + } + } + } + + // Thumbnail support + + @Override + public boolean readerSupportsThumbnails() { + return true; + } + + @Override + public boolean hasThumbnails(final int imageIndex) throws IOException { checkBounds(imageIndex); readHeader(); - return new TGAMetadata(header); + return extensions != null && extensions.getThumbnailOffset() > 0; + } + + @Override + public int getNumThumbnails(final int imageIndex) throws IOException { + return hasThumbnails(imageIndex) ? 1 : 0; + } + + @Override + public int getThumbnailWidth(final int imageIndex, final int thumbnailIndex) throws IOException { + checkBounds(imageIndex); + Validate.isTrue(thumbnailIndex >= 0 && thumbnailIndex < getNumThumbnails(imageIndex), "thumbnailIndex >= numThumbnails"); + + imageInput.seek(extensions.getThumbnailOffset()); + + return imageInput.readUnsignedByte(); + } + + @Override + public int getThumbnailHeight(final int imageIndex, final int thumbnailIndex) throws IOException { + getThumbnailWidth(imageIndex, thumbnailIndex); // Laziness... + + return imageInput.readUnsignedByte(); + } + + @Override + public BufferedImage readThumbnail(final int imageIndex, final int thumbnailIndex) throws IOException { + Iterator imageTypes = getImageTypes(imageIndex); + ImageTypeSpecifier rawType = getRawImageType(imageIndex); + + int width = getThumbnailWidth(imageIndex, thumbnailIndex); + int height = getThumbnailHeight(imageIndex, thumbnailIndex); + + // For thumbnail, always read entire image + Rectangle srcRegion = new Rectangle(width, height); + + BufferedImage destination = getDestination(null, imageTypes, width, height); + WritableRaster destRaster = destination.getRaster(); + WritableRaster rowRaster = rawType.createBufferedImage(width, 1).getRaster(); + + processThumbnailStarted(imageIndex, thumbnailIndex); + + // Thumbnail is always stored non-compressed, no need for RLE support + imageInput.seek(extensions.getThumbnailOffset() + 2); + + for (int y = 0; y < height; y++) { + switch (header.getPixelDepth()) { + case 8: + case 24: + case 32: + byte[] rowDataByte = ((DataBufferByte) rowRaster.getDataBuffer()).getData(); + readRowByte(imageInput, height, srcRegion, header.getOrigin(), 1, 1, rowDataByte, destRaster, rowRaster, y); + break; + case 16: + short[] rowDataUShort = ((DataBufferUShort) rowRaster.getDataBuffer()).getData(); + readRowUShort(imageInput, height, srcRegion, header.getOrigin(), 1, 1, rowDataUShort, destRaster, rowRaster, y); + break; + default: + throw new AssertionError("Unsupported pixel depth: " + header.getPixelDepth()); + } + + processThumbnailProgress(100f * y / height); + + if (height - 1 - y < srcRegion.y) { + break; + } + } + + processThumbnailComplete(); + + return destination; + } + + // Metadata support + + @Override + public IIOMetadata getImageMetadata(final int imageIndex) throws IOException { + checkBounds(imageIndex); + readHeader(); + + return new TGAMetadata(header, extensions); } public static void main(String[] args) throws IOException { diff --git a/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAImageReaderSpi.java b/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAImageReaderSpi.java index 2948915a..5a741ba3 100755 --- a/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAImageReaderSpi.java +++ b/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAImageReaderSpi.java @@ -45,7 +45,8 @@ public final class TGAImageReaderSpi extends ImageReaderSpiBase { super(new TGAProviderInfo()); } - @Override public boolean canDecodeInput(final Object source) throws IOException { + @Override + public boolean canDecodeInput(final Object source) throws IOException { if (!(source instanceof ImageInputStream)) { return false; } @@ -58,7 +59,7 @@ public final class TGAImageReaderSpi extends ImageReaderSpiBase { try { stream.setByteOrder(ByteOrder.LITTLE_ENDIAN); - // NOTE: The TGA format does not have a magic identifier, so this is guesswork... + // NOTE: The original TGA format does not have a magic identifier, so this is guesswork... // We'll try to match sane values, and hope no other files contains the same sequence. stream.readUnsignedByte(); @@ -88,11 +89,11 @@ public final class TGAImageReaderSpi extends ImageReaderSpiBase { int colorMapStart = stream.readUnsignedShort(); int colorMapSize = stream.readUnsignedShort(); - int colorMapDetph = stream.readUnsignedByte(); + int colorMapDepth = stream.readUnsignedByte(); if (colorMapSize == 0) { // No color map, all 3 fields should be 0 - if (colorMapStart!= 0 || colorMapDetph != 0) { + if (colorMapStart != 0 || colorMapDepth != 0) { return false; } } @@ -106,7 +107,7 @@ public final class TGAImageReaderSpi extends ImageReaderSpiBase { if (colorMapStart >= colorMapSize) { return false; } - if (colorMapDetph != 15 && colorMapDetph != 16 && colorMapDetph != 24 && colorMapDetph != 32) { + if (colorMapDepth != 15 && colorMapDepth != 16 && colorMapDepth != 24 && colorMapDepth != 32) { return false; } } @@ -134,6 +135,7 @@ public final class TGAImageReaderSpi extends ImageReaderSpiBase { // We're pretty sure by now, but there can still be false positives... // For 2.0 format, we could skip to end, and read "TRUEVISION-XFILE.\0" but it would be too slow + // unless we are working with a local file (and the file may still be a valid original TGA without it). return true; } finally { diff --git a/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAMetadata.java b/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAMetadata.java index f2d8f138..bcca2bb6 100755 --- a/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAMetadata.java +++ b/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAMetadata.java @@ -31,13 +31,17 @@ package com.twelvemonkeys.imageio.plugins.tga; import com.twelvemonkeys.imageio.AbstractMetadata; import javax.imageio.metadata.IIOMetadataNode; +import java.awt.*; import java.awt.image.IndexColorModel; +import java.util.Calendar; final class TGAMetadata extends AbstractMetadata { private final TGAHeader header; + private final TGAExtensions extensions; - TGAMetadata(final TGAHeader header) { + TGAMetadata(final TGAHeader header, final TGAExtensions extensions) { this.header = header; + this.extensions = extensions; } @Override @@ -45,6 +49,8 @@ final class TGAMetadata extends AbstractMetadata { IIOMetadataNode chroma = new IIOMetadataNode("Chroma"); IIOMetadataNode csType = new IIOMetadataNode("ColorSpaceType"); + chroma.appendChild(csType); + switch (header.getImageType()) { case TGA.IMAGETYPE_MONOCHROME: case TGA.IMAGETYPE_MONOCHROME_RLE: @@ -62,15 +68,22 @@ final class TGAMetadata extends AbstractMetadata { default: csType.setAttribute("name", "Unknown"); } - chroma.appendChild(csType); - // TODO: Channels in chroma node reflects channels in color model (see data node, for channels in data) + // NOTE: Channels in chroma node reflects channels in color model (see data node, for channels in data) IIOMetadataNode numChannels = new IIOMetadataNode("NumChannels"); + chroma.appendChild(numChannels); switch (header.getPixelDepth()) { case 8: - case 16: numChannels.setAttribute("value", Integer.toString(1)); break; + case 16: + if (header.getAttributeBits() > 0 && extensions != null && extensions.hasAlpha()) { + numChannels.setAttribute("value", Integer.toString(4)); + } + else { + numChannels.setAttribute("value", Integer.toString(3)); + } + break; case 24: numChannels.setAttribute("value", Integer.toString(3)); break; @@ -78,11 +91,10 @@ final class TGAMetadata extends AbstractMetadata { numChannels.setAttribute("value", Integer.toString(4)); break; } - chroma.appendChild(numChannels); IIOMetadataNode blackIsZero = new IIOMetadataNode("BlackIsZero"); - blackIsZero.setAttribute("value", "TRUE"); chroma.appendChild(blackIsZero); + blackIsZero.setAttribute("value", "TRUE"); // NOTE: TGA files may contain a color map, even if true color... // Not sure if this is a good idea to expose to the meta data, @@ -94,16 +106,26 @@ final class TGAMetadata extends AbstractMetadata { for (int i = 0; i < colorMap.getMapSize(); i++) { IIOMetadataNode paletteEntry = new IIOMetadataNode("PaletteEntry"); + palette.appendChild(paletteEntry); paletteEntry.setAttribute("index", Integer.toString(i)); paletteEntry.setAttribute("red", Integer.toString(colorMap.getRed(i))); paletteEntry.setAttribute("green", Integer.toString(colorMap.getGreen(i))); paletteEntry.setAttribute("blue", Integer.toString(colorMap.getBlue(i))); - - palette.appendChild(paletteEntry); } } + if (extensions != null && extensions.getBackgroundColor() != 0) { + Color background = new Color(extensions.getBackgroundColor(), true); + + IIOMetadataNode backgroundColor = new IIOMetadataNode("BackgroundColor"); + chroma.appendChild(backgroundColor); + + backgroundColor.setAttribute("red", Integer.toString(background.getRed())); + backgroundColor.setAttribute("green", Integer.toString(background.getGreen())); + backgroundColor.setAttribute("blue", Integer.toString(background.getBlue())); + } + return chroma; } @@ -116,15 +138,16 @@ final class TGAMetadata extends AbstractMetadata { case TGA.IMAGETYPE_COLORMAPPED_HUFFMAN: case TGA.IMAGETYPE_COLORMAPPED_HUFFMAN_QUADTREE: IIOMetadataNode node = new IIOMetadataNode("Compression"); + IIOMetadataNode compressionTypeName = new IIOMetadataNode("CompressionTypeName"); + node.appendChild(compressionTypeName); String value = header.getImageType() == TGA.IMAGETYPE_COLORMAPPED_HUFFMAN || header.getImageType() == TGA.IMAGETYPE_COLORMAPPED_HUFFMAN_QUADTREE ? "Uknown" : "RLE"; compressionTypeName.setAttribute("value", value); - node.appendChild(compressionTypeName); IIOMetadataNode lossless = new IIOMetadataNode("Lossless"); - lossless.setAttribute("value", "TRUE"); node.appendChild(lossless); + lossless.setAttribute("value", "TRUE"); return node; default: @@ -138,10 +161,12 @@ final class TGAMetadata extends AbstractMetadata { IIOMetadataNode node = new IIOMetadataNode("Data"); IIOMetadataNode planarConfiguration = new IIOMetadataNode("PlanarConfiguration"); - planarConfiguration.setAttribute("value", "PixelInterleaved"); node.appendChild(planarConfiguration); + planarConfiguration.setAttribute("value", "PixelInterleaved"); IIOMetadataNode sampleFormat = new IIOMetadataNode("SampleFormat"); + node.appendChild(sampleFormat); + switch (header.getImageType()) { case TGA.IMAGETYPE_COLORMAPPED: case TGA.IMAGETYPE_COLORMAPPED_RLE: @@ -154,13 +179,19 @@ final class TGAMetadata extends AbstractMetadata { break; } - node.appendChild(sampleFormat); - IIOMetadataNode bitsPerSample = new IIOMetadataNode("BitsPerSample"); + node.appendChild(bitsPerSample); + switch (header.getPixelDepth()) { case 8: - case 16: bitsPerSample.setAttribute("value", createListValue(1, Integer.toString(header.getPixelDepth()))); + case 16: + if (header.getAttributeBits() > 0 && extensions != null && extensions.hasAlpha()) { + bitsPerSample.setAttribute("value", "5, 5, 5, 1"); + } + else { + bitsPerSample.setAttribute("value", createListValue(3, "5")); + } break; case 24: bitsPerSample.setAttribute("value", createListValue(3, Integer.toString(8))); @@ -170,12 +201,6 @@ final class TGAMetadata extends AbstractMetadata { break; } - node.appendChild(bitsPerSample); - - // TODO: Do we need MSB? -// IIOMetadataNode sampleMSB = new IIOMetadataNode("SampleMSB"); -// sampleMSB.setAttribute("value", createListValue(header.getChannels(), "0")); - return node; } @@ -198,6 +223,7 @@ final class TGAMetadata extends AbstractMetadata { IIOMetadataNode dimension = new IIOMetadataNode("Dimension"); IIOMetadataNode imageOrientation = new IIOMetadataNode("ImageOrientation"); + dimension.appendChild(imageOrientation); switch (header.getOrigin()) { case TGA.ORIGIN_LOWER_LEFT: @@ -214,28 +240,64 @@ final class TGAMetadata extends AbstractMetadata { break; } - dimension.appendChild(imageOrientation); + IIOMetadataNode pixelAspectRatio = new IIOMetadataNode("PixelAspectRatio"); + dimension.appendChild(pixelAspectRatio); + pixelAspectRatio.setAttribute("value", extensions != null ? String.valueOf(extensions.getPixelAspectRatio()) : "1.0"); return dimension; } - // No document node + @Override + protected IIOMetadataNode getStandardDocumentNode() { + IIOMetadataNode document = new IIOMetadataNode("Document"); + + IIOMetadataNode formatVersion = new IIOMetadataNode("FormatVersion"); + document.appendChild(formatVersion); + formatVersion.setAttribute("value", extensions == null ? "1.0" : "2.0"); + + // ImageCreationTime from extensions date + if (extensions != null && extensions.getCreationDate() != null) { + IIOMetadataNode imageCreationTime = new IIOMetadataNode("ImageCreationTime"); + document.appendChild(imageCreationTime); + + Calendar date = extensions.getCreationDate(); + + imageCreationTime.setAttribute("year", String.valueOf(date.get(Calendar.YEAR))); + imageCreationTime.setAttribute("month", String.valueOf(date.get(Calendar.MONTH) + 1)); + imageCreationTime.setAttribute("day", String.valueOf(date.get(Calendar.DAY_OF_MONTH))); + imageCreationTime.setAttribute("hour", String.valueOf(date.get(Calendar.HOUR_OF_DAY))); + imageCreationTime.setAttribute("minute", String.valueOf(date.get(Calendar.MINUTE))); + imageCreationTime.setAttribute("second", String.valueOf(date.get(Calendar.SECOND))); + } + + return document; + } @Override protected IIOMetadataNode getStandardTextNode() { - // TODO: Extra "developer area" and other stuff might go here... + IIOMetadataNode text = new IIOMetadataNode("Text"); + + // NOTE: Names corresponds to equivalent fields in TIFF if (header.getIdentification() != null && !header.getIdentification().isEmpty()) { - IIOMetadataNode text = new IIOMetadataNode("Text"); - - IIOMetadataNode textEntry = new IIOMetadataNode("TextEntry"); - textEntry.setAttribute("keyword", "identification"); - textEntry.setAttribute("value", header.getIdentification()); - text.appendChild(textEntry); - - return text; + appendTextEntry(text, "DocumentName", header.getIdentification()); } - return null; + if (extensions != null) { + appendTextEntry(text, "Software", extensions.getSoftwareVersion() == null ? extensions.getSoftware() : extensions.getSoftware() + " " + extensions.getSoftwareVersion()); + appendTextEntry(text, "Artist", extensions.getAuthorName()); + appendTextEntry(text, "UserComment", extensions.getAuthorComments()); + } + + return text.hasChildNodes() ? text : null; + } + + private void appendTextEntry(final IIOMetadataNode parent, final String keyword, final String value) { + if (value != null) { + IIOMetadataNode textEntry = new IIOMetadataNode("TextEntry"); + parent.appendChild(textEntry); + textEntry.setAttribute("keyword", keyword); + textEntry.setAttribute("value", value); + } } // No tiling @@ -245,9 +307,23 @@ final class TGAMetadata extends AbstractMetadata { IIOMetadataNode transparency = new IIOMetadataNode("Transparency"); IIOMetadataNode alpha = new IIOMetadataNode("Alpha"); - alpha.setAttribute("value", header.getPixelDepth() == 32 ? "nonpremultiplied" : "none"); transparency.appendChild(alpha); + if (extensions != null) { + if (extensions.hasAlpha()) { + alpha.setAttribute("value", extensions.isAlphaPremultiplied() ? "premultiplied" : "nonpremultiplied"); + } + else { + alpha.setAttribute("value", "none"); + } + } + else if (header.getAttributeBits() == 8) { + alpha.setAttribute("value", "nonpremultiplied"); + } + else { + alpha.setAttribute("value", "none"); + } + return transparency; } } From 9bb67742b7232d4cf0c1d7a55bfb4bcf116437df Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Tue, 28 Jul 2015 22:21:45 +0200 Subject: [PATCH 071/182] TMI-157: Radiance RGBE (.HDR) support --- imageio/imageio-hdr/pom.xml | 30 ++ .../imageio/plugins/hdr/HDR.java | 13 + .../imageio/plugins/hdr/HDRHeader.java | 95 ++++ .../plugins/hdr/HDRImageReadParam.java | 27 + .../imageio/plugins/hdr/HDRImageReader.java | 166 ++++++ .../plugins/hdr/HDRImageReaderSpi.java | 56 ++ .../imageio/plugins/hdr/HDRMetadata.java | 127 +++++ .../imageio/plugins/hdr/HDRProviderInfo.java | 27 + .../imageio/plugins/hdr/RGBE.java | 494 ++++++++++++++++++ .../hdr/tonemap/DefaultToneMapper.java | 35 ++ .../plugins/hdr/tonemap/GammaToneMapper.java | 38 ++ .../plugins/hdr/tonemap/NullToneMapper.java | 18 + .../plugins/hdr/tonemap/ToneMapper.java | 12 + .../services/javax.imageio.spi.ImageReaderSpi | 1 + .../plugins/hdr/HDRImageReaderTest.java | 85 +++ .../src/test/resources/hdr/memorial_o876.hdr | Bin 0 -> 1341352 bytes imageio/pom.xml | 1 + 17 files changed, 1225 insertions(+) create mode 100644 imageio/imageio-hdr/pom.xml create mode 100644 imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDR.java create mode 100644 imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRHeader.java create mode 100644 imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRImageReadParam.java create mode 100644 imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRImageReader.java create mode 100644 imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRImageReaderSpi.java create mode 100755 imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRMetadata.java create mode 100644 imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRProviderInfo.java create mode 100644 imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/RGBE.java create mode 100644 imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/tonemap/DefaultToneMapper.java create mode 100644 imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/tonemap/GammaToneMapper.java create mode 100644 imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/tonemap/NullToneMapper.java create mode 100644 imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/tonemap/ToneMapper.java create mode 100755 imageio/imageio-hdr/src/main/resources/META-INF/services/javax.imageio.spi.ImageReaderSpi create mode 100755 imageio/imageio-hdr/src/test/java/com/twelvemonkeys/imageio/plugins/hdr/HDRImageReaderTest.java create mode 100644 imageio/imageio-hdr/src/test/resources/hdr/memorial_o876.hdr diff --git a/imageio/imageio-hdr/pom.xml b/imageio/imageio-hdr/pom.xml new file mode 100644 index 00000000..dae0b4fb --- /dev/null +++ b/imageio/imageio-hdr/pom.xml @@ -0,0 +1,30 @@ + + + 4.0.0 + + com.twelvemonkeys.imageio + imageio + 3.2-SNAPSHOT + + imageio-hdr + TwelveMonkeys :: ImageIO :: HDR plugin + + ImageIO plugin for Radiance RGBE High Dynaimc Range format (HDR). + + + + + com.twelvemonkeys.imageio + imageio-core + + + com.twelvemonkeys.imageio + imageio-core + tests + + + com.twelvemonkeys.imageio + imageio-metadata + + + diff --git a/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDR.java b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDR.java new file mode 100644 index 00000000..f85f4b9a --- /dev/null +++ b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDR.java @@ -0,0 +1,13 @@ +package com.twelvemonkeys.imageio.plugins.hdr; + +/** + * HDR. + * + * @author Harald Kuhr + * @author last modified by $Author: harald.kuhr$ + * @version $Id: HDR.java,v 1.0 27/07/15 harald.kuhr Exp$ + */ +interface HDR { + byte[] RADIANCE_MAGIC = new byte[] {'#', '?', 'R', 'A', 'D', 'I', 'A', 'N', 'C', 'E'}; + byte[] RGBE_MAGIC = new byte[] {'#', '?', 'R', 'G', 'B', 'E'}; +} diff --git a/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRHeader.java b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRHeader.java new file mode 100644 index 00000000..b7fe68a9 --- /dev/null +++ b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRHeader.java @@ -0,0 +1,95 @@ +package com.twelvemonkeys.imageio.plugins.hdr; + +import javax.imageio.IIOException; +import javax.imageio.stream.ImageInputStream; +import java.io.IOException; + +/** + * HDRHeader. + * + * @author Harald Kuhr + * @author last modified by $Author: harald.kuhr$ + * @version $Id: HDRHeader.java,v 1.0 27/07/15 harald.kuhr Exp$ + */ +final class HDRHeader { + private static final String KEY_FORMAT = "FORMAT="; + private static final String KEY_PRIMARIES = "PRIMARIES="; + private static final String KEY_EXPOSURE = "EXPOSURE="; + private static final String KEY_GAMMA = "GAMMA="; + private static final String KEY_SOFTWARE = "SOFTWARE="; + + private int width; + private int height; + + private String software; + + public static HDRHeader read(final ImageInputStream stream) throws IOException { + HDRHeader header = new HDRHeader(); + + while (true) { + String line = stream.readLine().trim(); + + if (line.isEmpty()) { + // This is the last line before the dimensions + break; + } + + if (line.startsWith("#?")) { + // Program specifier, don't need that... + } + else if (line.startsWith("#")) { + // Comment (ignore) + } + else if (line.startsWith(KEY_FORMAT)) { + String format = line.substring(KEY_FORMAT.length()).trim(); + + if (!format.equals("32-bit_rle_rgbe")) { + throw new IIOException("Unsupported format \"" + format + "\"(expected \"32-bit_rle_rgbe\")"); + } + // TODO: Support the 32-bit_rle_xyze format + } + else if (line.startsWith(KEY_PRIMARIES)) { + // TODO: We are going to need these values... + // Should contain 8 (RGB + white point) coordinates + } + else if (line.startsWith(KEY_EXPOSURE)) { + // TODO: We are going to need these values... + } + else if (line.startsWith(KEY_GAMMA)) { + // TODO: We are going to need these values... + } + else if (line.startsWith(KEY_SOFTWARE)) { + header.software = line.substring(KEY_SOFTWARE.length()).trim(); + } + else { + // ...ignore + } + } + + // TODO: Proper parsing of width/height and orientation! + String dimensionsLine = stream.readLine().trim(); + String[] dims = dimensionsLine.split("\\s"); + + if (dims[0].equals("-Y") && dims[2].equals("+X")) { + header.height = Integer.parseInt(dims[1]); + header.width = Integer.parseInt(dims[3]); + + return header; + } + else { + throw new IIOException("Unsupported RGBE orientation (expected \"-Y ... +X ...\")"); + } + } + + public int getWidth() { + return width; + } + + public int getHeight() { + return height; + } + + public String getSoftware() { + return software; + } +} diff --git a/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRImageReadParam.java b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRImageReadParam.java new file mode 100644 index 00000000..6a8ee9ea --- /dev/null +++ b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRImageReadParam.java @@ -0,0 +1,27 @@ +package com.twelvemonkeys.imageio.plugins.hdr; + +import com.twelvemonkeys.imageio.plugins.hdr.tonemap.DefaultToneMapper; +import com.twelvemonkeys.imageio.plugins.hdr.tonemap.ToneMapper; + +import javax.imageio.ImageReadParam; + +/** + * HDRImageReadParam. + * + * @author Harald Kuhr + * @author last modified by $Author: harald.kuhr$ + * @version $Id: HDRImageReadParam.java,v 1.0 28/07/15 harald.kuhr Exp$ + */ +public final class HDRImageReadParam extends ImageReadParam { + static final ToneMapper DEFAULT_TONE_MAPPER = new DefaultToneMapper(.1f); + + private ToneMapper toneMapper = DEFAULT_TONE_MAPPER; + + public ToneMapper getToneMapper() { + return toneMapper; + } + + public void setToneMapper(final ToneMapper toneMapper) { + this.toneMapper = toneMapper != null ? toneMapper : DEFAULT_TONE_MAPPER; + } +} diff --git a/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRImageReader.java b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRImageReader.java new file mode 100644 index 00000000..0513cf86 --- /dev/null +++ b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRImageReader.java @@ -0,0 +1,166 @@ +package com.twelvemonkeys.imageio.plugins.hdr; + +import com.twelvemonkeys.imageio.ImageReaderBase; +import com.twelvemonkeys.imageio.plugins.hdr.tonemap.ToneMapper; +import com.twelvemonkeys.imageio.util.ImageTypeSpecifiers; + +import javax.imageio.ImageIO; +import javax.imageio.ImageReadParam; +import javax.imageio.ImageTypeSpecifier; +import javax.imageio.metadata.IIOMetadata; +import javax.imageio.spi.ImageReaderSpi; +import java.awt.*; +import java.awt.color.ColorSpace; +import java.awt.image.BufferedImage; +import java.awt.image.DataBuffer; +import java.awt.image.WritableRaster; +import java.io.File; +import java.io.IOException; +import java.util.Collections; +import java.util.Iterator; + +/** + * HDRImageReader. + * + * @author Harald Kuhr + * @author last modified by $Author: harald.kuhr$ + * @version $Id: HDRImageReader.java,v 1.0 27/07/15 harald.kuhr Exp$ + */ +public final class HDRImageReader extends ImageReaderBase { + // Specs: http://radsite.lbl.gov/radiance/refer/filefmts.pdf + + private HDRHeader header; + + protected HDRImageReader(final ImageReaderSpi provider) { + super(provider); + } + + @Override + protected void resetMembers() { + header = null; + } + + private void readHeader() throws IOException { + if (header == null) { + header = HDRHeader.read(imageInput); + + imageInput.flushBefore(imageInput.getStreamPosition()); + } + + imageInput.seek(imageInput.getFlushedPosition()); + } + + @Override + public int getWidth(int imageIndex) throws IOException { + checkBounds(imageIndex); + readHeader(); + + return header.getWidth(); + } + + @Override + public int getHeight(int imageIndex) throws IOException { + checkBounds(imageIndex); + readHeader(); + + return header.getHeight(); + } + + @Override + public Iterator getImageTypes(int imageIndex) throws IOException { + checkBounds(imageIndex); + readHeader(); + + ColorSpace sRGB = ColorSpace.getInstance(ColorSpace.CS_sRGB); + return Collections.singletonList(ImageTypeSpecifiers.createInterleaved(sRGB, new int[] {0, 1, 2}, DataBuffer.TYPE_FLOAT, false, false)).iterator(); + } + + @Override + public BufferedImage read(final int imageIndex, final ImageReadParam param) throws IOException { + checkBounds(imageIndex); + readHeader(); + + int width = getWidth(imageIndex); + int height = getHeight(imageIndex); + + BufferedImage destination = getDestination(param, getImageTypes(imageIndex), width, height); + + Rectangle srcRegion = new Rectangle(); + Rectangle destRegion = new Rectangle(); + computeRegions(param, width, height, destination, srcRegion, destRegion); + + WritableRaster raster = destination.getRaster() + .createWritableChild(destRegion.x, destRegion.y, destRegion.width, destRegion.height, 0, 0, null); + + int xSub = param != null ? param.getSourceXSubsampling() : 1; + int ySub = param != null ? param.getSourceYSubsampling() : 1; + + // Allow pluggable tone mapper via ImageReadParam + ToneMapper toneMapper = param instanceof HDRImageReadParam + ? ((HDRImageReadParam) param).getToneMapper() + : HDRImageReadParam.DEFAULT_TONE_MAPPER; + + byte[] rowRGBE = new byte[width * 4]; + float[] rgb = new float[3]; + + processImageStarted(imageIndex); + + // Process one scanline of RGBE data at a time + for (int srcY = 0; srcY < height; srcY++) { + int dstY = ((srcY - srcRegion.y) / ySub) + destRegion.y; + if (dstY >= destRegion.height) { + break; + } + + RGBE.readPixelsRawRLE(imageInput, rowRGBE, 0, width, 1); + + if (srcY % ySub == 0 && dstY >= destRegion.y) { + for (int srcX = srcRegion.x; srcX < srcRegion.x + srcRegion.width; srcX += xSub) { + int dstX = ((srcX - srcRegion.x) / xSub) + destRegion.x; + if (dstX >= destRegion.width) { + break; + } + + RGBE.rgbe2float(rgb, rowRGBE, srcX * 4); + + // Map/clamp RGB values into visible range, normally [0...1] + toneMapper.map(rgb); + + raster.setDataElements(dstX, dstY, rgb); + } + } + + processImageProgress(srcY * 100f / height); + + if (abortRequested()) { + processReadAborted(); + break; + } + } + + processImageComplete(); + + return destination; + } + + @Override + public ImageReadParam getDefaultReadParam() { + return new HDRImageReadParam(); + } + + @Override + public IIOMetadata getImageMetadata(int imageIndex) throws IOException { + checkBounds(imageIndex); + readHeader(); + + return new HDRMetadata(header); + } + + public static void main(final String[] args) throws IOException { + File file = new File(args[0]); + + BufferedImage image = ImageIO.read(file); + + showIt(image, file.getName()); + } +} diff --git a/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRImageReaderSpi.java b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRImageReaderSpi.java new file mode 100644 index 00000000..0624e2f6 --- /dev/null +++ b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRImageReaderSpi.java @@ -0,0 +1,56 @@ +package com.twelvemonkeys.imageio.plugins.hdr; + +import com.twelvemonkeys.imageio.spi.ImageReaderSpiBase; + +import javax.imageio.ImageReader; +import javax.imageio.stream.ImageInputStream; +import java.io.IOException; +import java.util.Arrays; +import java.util.Locale; + +/** + * HDRImageReaderSpi. + * + * @author Harald Kuhr + * @author last modified by $Author: harald.kuhr$ + * @version $Id: HDRImageReaderSpi.java,v 1.0 27/07/15 harald.kuhr Exp$ + */ +public final class HDRImageReaderSpi extends ImageReaderSpiBase { + public HDRImageReaderSpi() { + super(new HDRProviderInfo()); + } + + @Override + public boolean canDecodeInput(final Object source) throws IOException { + if (!(source instanceof ImageInputStream)) { + return false; + } + + ImageInputStream stream = (ImageInputStream) source; + + stream.mark(); + + try { + // NOTE: All images I have found starts with #?RADIANCE (or has no #? line at all), + // although some sources claim that #?RGBE is also used. + byte[] magic = new byte[HDR.RADIANCE_MAGIC.length]; + stream.readFully(magic); + + return Arrays.equals(HDR.RADIANCE_MAGIC, magic) + || Arrays.equals(HDR.RGBE_MAGIC, Arrays.copyOf(magic, 6)); + } + finally { + stream.reset(); + } + } + + @Override + public ImageReader createReaderInstance(Object extension) throws IOException { + return new HDRImageReader(this); + } + + @Override + public String getDescription(final Locale locale) { + return "Radiance RGBE High Dynaimc Range (HDR) image reader"; + } +} diff --git a/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRMetadata.java b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRMetadata.java new file mode 100755 index 00000000..52cabaeb --- /dev/null +++ b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRMetadata.java @@ -0,0 +1,127 @@ +/* + * Copyright (c) 2014, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name "TwelveMonkeys" nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.twelvemonkeys.imageio.plugins.hdr; + +import com.twelvemonkeys.imageio.AbstractMetadata; + +import javax.imageio.metadata.IIOMetadataNode; + +final class HDRMetadata extends AbstractMetadata { + private final HDRHeader header; + + HDRMetadata(final HDRHeader header) { + this.header = header; + } + + @Override + protected IIOMetadataNode getStandardChromaNode() { + IIOMetadataNode chroma = new IIOMetadataNode("Chroma"); + + IIOMetadataNode csType = new IIOMetadataNode("ColorSpaceType"); + chroma.appendChild(csType); + csType.setAttribute("name", "RGB"); + // TODO: Support XYZ + + IIOMetadataNode numChannels = new IIOMetadataNode("NumChannels"); + numChannels.setAttribute("value", "3"); + chroma.appendChild(numChannels); + + IIOMetadataNode blackIsZero = new IIOMetadataNode("BlackIsZero"); + blackIsZero.setAttribute("value", "TRUE"); + chroma.appendChild(blackIsZero); + + return chroma; + } + + // No compression + + @Override + protected IIOMetadataNode getStandardCompressionNode() { + IIOMetadataNode node = new IIOMetadataNode("Compression"); + + IIOMetadataNode compressionTypeName = new IIOMetadataNode("CompressionTypeName"); + compressionTypeName.setAttribute("value", "RLE"); + node.appendChild(compressionTypeName); + + IIOMetadataNode lossless = new IIOMetadataNode("Lossless"); + lossless.setAttribute("value", "TRUE"); + node.appendChild(lossless); + + return node; + } + + @Override + protected IIOMetadataNode getStandardDataNode() { + IIOMetadataNode node = new IIOMetadataNode("Data"); + + IIOMetadataNode sampleFormat = new IIOMetadataNode("SampleFormat"); + sampleFormat.setAttribute("value", "UnsignedIntegral"); + node.appendChild(sampleFormat); + + IIOMetadataNode bitsPerSample = new IIOMetadataNode("BitsPerSample"); + bitsPerSample.setAttribute("value", "8 8 8 8"); + node.appendChild(bitsPerSample); + + return node; + } + + @Override + protected IIOMetadataNode getStandardDimensionNode() { + IIOMetadataNode dimension = new IIOMetadataNode("Dimension"); + + // TODO: Support other orientations + IIOMetadataNode imageOrientation = new IIOMetadataNode("ImageOrientation"); + imageOrientation.setAttribute("value", "Normal"); + dimension.appendChild(imageOrientation); + + return dimension; + } + + // No document node + + @Override + protected IIOMetadataNode getStandardTextNode() { + if (header.getSoftware() != null) { + IIOMetadataNode text = new IIOMetadataNode("Text"); + + IIOMetadataNode textEntry = new IIOMetadataNode("TextEntry"); + textEntry.setAttribute("keyword", "Software"); + textEntry.setAttribute("value", header.getSoftware()); + text.appendChild(textEntry); + + return text; + } + + return null; + } + + // No tiling + + // No transparency +} diff --git a/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRProviderInfo.java b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRProviderInfo.java new file mode 100644 index 00000000..ab1b2b1f --- /dev/null +++ b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRProviderInfo.java @@ -0,0 +1,27 @@ +package com.twelvemonkeys.imageio.plugins.hdr; + +import com.twelvemonkeys.imageio.spi.ReaderWriterProviderInfo; + +/** + * HDRProviderInfo. + * + * @author Harald Kuhr + * @author last modified by $Author: harald.kuhr$ + * @version $Id: HDRProviderInfo.java,v 1.0 27/07/15 harald.kuhr Exp$ + */ +final class HDRProviderInfo extends ReaderWriterProviderInfo { + protected HDRProviderInfo() { + super( + HDRProviderInfo.class, + new String[] {"HDR", "hdr", "RGBE", "rgbe"}, + new String[] {"hdr", "rgbe", "xyze", "pic"}, + new String[] {"image/vnd.radiance"}, + "com.twelvemonkeys.imageio.plugins.hdr.HDRImageReader", + new String[]{"com.twelvemonkeys.imageio.plugins.hdr.HDRImageReaderSpi"}, + null, + null, + false, null, null, null, null, + true, null, null, null, null + ); + } +} diff --git a/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/RGBE.java b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/RGBE.java new file mode 100644 index 00000000..b64607e1 --- /dev/null +++ b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/RGBE.java @@ -0,0 +1,494 @@ +package com.twelvemonkeys.imageio.plugins.hdr; + +import java.io.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * This file contains code to read and write four byte rgbe file format + * developed by Greg Ward. It handles the conversions between rgbe and + * pixels consisting of floats. The data is assumed to be an array of floats. + * By default there are three floats per pixel in the order red, green, blue. + * (RGBE_DATA_??? values control this.) Only the mimimal header reading and + * writing is implemented. Each routine does error checking and will return + * a status value as defined below. This code is intended as a skeleton so + * feel free to modify it to suit your needs.

    + *

    + * Ported to Java and restructured by Kenneth Russell.
    + * posted to http://www.graphics.cornell.edu/~bjw/
    + * written by Bruce Walter (bjw@graphics.cornell.edu) 5/26/95
    + * based on code written by Greg Ward
    + *

    + * Source: https://java.net/projects/jogl-demos/sources/svn/content/trunk/src/demos/hdr/RGBE.java + */ +final class RGBE { + // Flags indicating which fields in a Header are valid + private static final int VALID_PROGRAMTYPE = 0x01; + private static final int VALID_GAMMA = 0x02; + private static final int VALID_EXPOSURE = 0x04; + + private static final String gammaString = "GAMMA="; + private static final String exposureString = "EXPOSURE="; + + private static final Pattern widthHeightPattern = Pattern.compile("-Y (\\d+) \\+X (\\d+)"); + + public static class Header { + // Indicates which fields are valid + private int valid; + + // Listed at beginning of file to identify it after "#?". + // Defaults to "RGBE" + private String programType; + + // Image has already been gamma corrected with given gamma. + // Defaults to 1.0 (no correction) + private float gamma; + + // A value of 1.0 in an image corresponds to + // watts/steradian/m^2. Defaults to 1.0. + private float exposure; + + // Width and height of image + private int width; + private int height; + + private Header(int valid, + String programType, + float gamma, + float exposure, + int width, + int height) { + this.valid = valid; + this.programType = programType; + this.gamma = gamma; + this.exposure = exposure; + this.width = width; + this.height = height; + } + + public boolean isProgramTypeValid() { + return ((valid & VALID_PROGRAMTYPE) != 0); + } + + public boolean isGammaValid() { + return ((valid & VALID_GAMMA) != 0); + } + + public boolean isExposureValid() { + return ((valid & VALID_EXPOSURE) != 0); + } + + public String getProgramType() { + return programType; + } + + public float getGamma() { + return gamma; + } + + public float getExposure() { + return exposure; + } + + public int getWidth() { + return width; + } + + public int getHeight() { + return height; + } + + public String toString() { + StringBuffer buf = new StringBuffer(); + if (isProgramTypeValid()) { + buf.append(" Program type: "); + buf.append(getProgramType()); + } + buf.append(" Gamma"); + if (isGammaValid()) { + buf.append(" [valid]"); + } + buf.append(": "); + buf.append(getGamma()); + buf.append(" Exposure"); + if (isExposureValid()) { + buf.append(" [valid]"); + } + buf.append(": "); + buf.append(getExposure()); + buf.append(" Width: "); + buf.append(getWidth()); + buf.append(" Height: "); + buf.append(getHeight()); + return buf.toString(); + } + } + + public static Header readHeader(final DataInput in) throws IOException { + int valid = 0; + String programType = null; + float gamma = 1.0f; + float exposure = 1.0f; + int width = 0; + int height = 0; + + String buf = in.readLine(); + if (buf == null) { + throw new IOException("Unexpected EOF reading magic token"); + } + if (buf.charAt(0) == '#' && buf.charAt(1) == '?') { + valid |= VALID_PROGRAMTYPE; + programType = buf.substring(2); + buf = in.readLine(); + if (buf == null) { + throw new IOException("Unexpected EOF reading line after magic token"); + } + } + + boolean foundFormat = false; + boolean done = false; + while (!done) { + if (buf.equals("FORMAT=32-bit_rle_rgbe")) { + foundFormat = true; + } + else if (buf.startsWith(gammaString)) { + valid |= VALID_GAMMA; + gamma = Float.parseFloat(buf.substring(gammaString.length())); + } + else if (buf.startsWith(exposureString)) { + valid |= VALID_EXPOSURE; + exposure = Float.parseFloat(buf.substring(exposureString.length())); + } + else { + Matcher m = widthHeightPattern.matcher(buf); + if (m.matches()) { + width = Integer.parseInt(m.group(2)); + height = Integer.parseInt(m.group(1)); + done = true; + } + } + + if (!done) { + buf = in.readLine(); + if (buf == null) { + throw new IOException("Unexpected EOF reading header"); + } + } + } + + if (!foundFormat) { + throw new IOException("No FORMAT specifier found"); + } + + return new Header(valid, programType, gamma, exposure, width, height); + } + + /** + * Simple read routine. Will not correctly handle run length encoding. + */ + public static void readPixels(DataInput in, float[] data, int numpixels) throws IOException { + byte[] rgbe = new byte[4]; + float[] rgb = new float[3]; + int offset = 0; + + while (numpixels-- > 0) { + in.readFully(rgbe); + + rgbe2float(rgb, rgbe, 0); + + data[offset++] = rgb[0]; + data[offset++] = rgb[1]; + data[offset++] = rgb[2]; + } + } + + public static void readPixelsRaw(DataInput in, byte[] data, int offset, int numpixels) throws IOException { + int numExpected = 4 * numpixels; + in.readFully(data, offset, numExpected); + } + + public static void readPixelsRawRLE(DataInput in, byte[] data, int offset, + int scanline_width, int num_scanlines) throws IOException { + byte[] rgbe = new byte[4]; + byte[] scanline_buffer = null; + int ptr, ptr_end; + int count; + byte[] buf = new byte[2]; + + if ((scanline_width < 8) || (scanline_width > 0x7fff)) { + // run length encoding is not allowed so read flat + readPixelsRaw(in, data, offset, scanline_width * num_scanlines); + } + + // read in each successive scanline + while (num_scanlines > 0) { + in.readFully(rgbe); + + if ((rgbe[0] != 2) || (rgbe[1] != 2) || ((rgbe[2] & 0x80) != 0)) { + // this file is not run length encoded + data[offset++] = rgbe[0]; + data[offset++] = rgbe[1]; + data[offset++] = rgbe[2]; + data[offset++] = rgbe[3]; + readPixelsRaw(in, data, offset, scanline_width * num_scanlines - 1); + } + + if ((((rgbe[2] & 0xFF) << 8) | (rgbe[3] & 0xFF)) != scanline_width) { + throw new IOException("Wrong scanline width " + + (((rgbe[2] & 0xFF) << 8) | (rgbe[3] & 0xFF)) + + ", expected " + scanline_width); + } + + if (scanline_buffer == null) { + scanline_buffer = new byte[4 * scanline_width]; + } + + ptr = 0; + // read each of the four channels for the scanline into the buffer + for (int i = 0; i < 4; i++) { + ptr_end = (i + 1) * scanline_width; + while (ptr < ptr_end) { + in.readFully(buf); + + if ((buf[0] & 0xFF) > 128) { + // a run of the same value + count = (buf[0] & 0xFF) - 128; + if ((count == 0) || (count > ptr_end - ptr)) { + throw new IOException("Bad scanline data"); + } + while (count-- > 0) { + scanline_buffer[ptr++] = buf[1]; + } + } + else { + // a non-run + count = buf[0] & 0xFF; + if ((count == 0) || (count > ptr_end - ptr)) { + throw new IOException("Bad scanline data"); + } + scanline_buffer[ptr++] = buf[1]; + if (--count > 0) { + in.readFully(scanline_buffer, ptr, count); + ptr += count; + } + } + } + } + // copy byte data to output + for (int i = 0; i < scanline_width; i++) { + data[offset++] = scanline_buffer[i]; + data[offset++] = scanline_buffer[i + scanline_width]; + data[offset++] = scanline_buffer[i + 2 * scanline_width]; + data[offset++] = scanline_buffer[i + 3 * scanline_width]; + } + num_scanlines--; + } + } + + /** + * Standard conversion from float pixels to rgbe pixels. + */ + public static void float2rgbe(byte[] rgbe, float red, float green, float blue) { + float v; + int e; + + v = red; + if (green > v) { + v = green; + } + if (blue > v) { + v = blue; + } + if (v < 1e-32f) { + rgbe[0] = rgbe[1] = rgbe[2] = rgbe[3] = 0; + } + else { + FracExp fe = frexp(v); + v = (float) (fe.getFraction() * 256.0 / v); + rgbe[0] = (byte) (red * v); + rgbe[1] = (byte) (green * v); + rgbe[2] = (byte) (blue * v); + rgbe[3] = (byte) (fe.getExponent() + 128); + } + } + + /** + * Standard conversion from rgbe to float pixels. Note: Ward uses + * ldexp(col+0.5,exp-(128+8)). However we wanted pixels in the + * range [0,1] to map back into the range [0,1]. + */ + public static void rgbe2float(float[] rgb, byte[] rgbe, int startRGBEOffset) { + float f; + + if (rgbe[startRGBEOffset + 3] != 0) { // nonzero pixel + f = (float) ldexp(1.0, (rgbe[startRGBEOffset + 3] & 0xFF) - (128 + 8)); + rgb[0] = (rgbe[startRGBEOffset + 0] & 0xFF) * f; + rgb[1] = (rgbe[startRGBEOffset + 1] & 0xFF) * f; + rgb[2] = (rgbe[startRGBEOffset + 2] & 0xFF) * f; + } + else { + rgb[0] = 0; + rgb[1] = 0; + rgb[2] = 0; + } + } + + public static double ldexp(double value, int exp) { + if (!finite(value) || value == 0.0) { + return value; + } + value = scalbn(value, exp); + // No good way to indicate errno (want to avoid throwing + // exceptions because don't know about stability of calculations) + // if(!finite(value)||value==0.0) errno = ERANGE; + return value; + } + + //---------------------------------------------------------------------- + // Internals only below this point + // + + //---------------------------------------------------------------------- + // Math routines, some fdlibm-derived + // + + static class FracExp { + private double fraction; + private int exponent; + + public FracExp(double fraction, int exponent) { + this.fraction = fraction; + this.exponent = exponent; + } + + public double getFraction() { + return fraction; + } + + public int getExponent() { + return exponent; + } + } + + private static final double two54 = 1.80143985094819840000e+16; // 43500000 00000000 + private static final double twom54 = 5.55111512312578270212e-17; // 0x3C900000 0x00000000 + private static final double huge = 1.0e+300; + private static final double tiny = 1.0e-300; + + private static int hi(double x) { + long bits = Double.doubleToRawLongBits(x); + return (int) (bits >>> 32); + } + + private static int lo(double x) { + long bits = Double.doubleToRawLongBits(x); + return (int) bits; + } + + private static double fromhilo(int hi, int lo) { + return Double.longBitsToDouble((((long) hi) << 32) | + (((long) lo) & 0xFFFFFFFFL)); + } + + private static FracExp frexp(double x) { + int hx = hi(x); + int ix = 0x7fffffff & hx; + int lx = lo(x); + int e = 0; + if (ix >= 0x7ff00000 || ((ix | lx) == 0)) { + return new FracExp(x, e); // 0,inf,nan + } + if (ix < 0x00100000) { // subnormal + x *= two54; + hx = hi(x); + ix = hx & 0x7fffffff; + e = -54; + } + e += (ix >> 20) - 1022; + hx = (hx & 0x800fffff) | 0x3fe00000; + lx = lo(x); + return new FracExp(fromhilo(hx, lx), e); + } + + private static boolean finite(double x) { + int hx; + hx = hi(x); + return (((hx & 0x7fffffff) - 0x7ff00000) >> 31) != 0; + } + + /** + * copysign(double x, double y)
    + * copysign(x,y) returns a value with the magnitude of x and + * with the sign bit of y. + */ + private static double copysign(double x, double y) { + return fromhilo((hi(x) & 0x7fffffff) | (hi(y) & 0x80000000), lo(x)); + } + + /** + * scalbn (double x, int n)
    + * scalbn(x,n) returns x* 2**n computed by exponent + * manipulation rather than by actually performing an + * exponentiation or a multiplication. + */ + private static double scalbn(double x, int n) { + int hx = hi(x); + int lx = lo(x); + int k = (hx & 0x7ff00000) >> 20; // extract exponent + if (k == 0) { // 0 or subnormal x + if ((lx | (hx & 0x7fffffff)) == 0) { + return x; // +-0 + } + x *= two54; + hx = hi(x); + k = ((hx & 0x7ff00000) >> 20) - 54; + if (n < -50000) { + return tiny * x; // underflow + } + } + if (k == 0x7ff) { + return x + x; // NaN or Inf + } + k = k + n; + if (k > 0x7fe) { + return huge * copysign(huge, x); // overflow + } + if (k > 0) { + // normal result + return fromhilo((hx & 0x800fffff) | (k << 20), lo(x)); + } + if (k <= -54) { + if (n > 50000) { + // in case integer overflow in n+k + return huge * copysign(huge, x); // overflow + } + else { + return tiny * copysign(tiny, x); // underflow + } + } + k += 54; // subnormal result + x = fromhilo((hx & 0x800fffff) | (k << 20), lo(x)); + return x * twom54; + } + + //---------------------------------------------------------------------- + // Test harness + // + + public static void main(String[] args) { + for (int i = 0; i < args.length; i++) { + try { + DataInputStream in = new DataInputStream(new BufferedInputStream(new FileInputStream(args[i]))); + Header header = RGBE.readHeader(in); + System.err.println("Header for file \"" + args[i] + "\":"); + System.err.println(" " + header); + byte[] data = new byte[header.getWidth() * header.getHeight() * 4]; + readPixelsRawRLE(in, data, 0, header.getWidth(), header.getHeight()); + in.close(); + } + catch (IOException e) { + e.printStackTrace(); + } + } + } +} diff --git a/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/tonemap/DefaultToneMapper.java b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/tonemap/DefaultToneMapper.java new file mode 100644 index 00000000..740c0913 --- /dev/null +++ b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/tonemap/DefaultToneMapper.java @@ -0,0 +1,35 @@ +package com.twelvemonkeys.imageio.plugins.hdr.tonemap; + +/** + * DefaultToneMapper. + *

    + * Normalizes values to range [0...1] using: + * + *

    Vout = Vin / (Vin + C)

    + * + * Where C is constant. + * + * @author Harald Kuhr + * @author last modified by $Author: harald.kuhr$ + * @version $Id: DefaultToneMapper.java,v 1.0 28/07/15 harald.kuhr Exp$ + */ +public final class DefaultToneMapper implements ToneMapper { + + private final float constant; + + public DefaultToneMapper() { + this(1); + } + + public DefaultToneMapper(final float constant) { + this.constant = constant; + } + + @Override + public void map(final float[] rgb) { + // Default Vo = Vi / (Vi + 1) + for (int i = 0; i < rgb.length; i++) { + rgb[i] = rgb[i] / (rgb[i] + constant); + } + } +} diff --git a/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/tonemap/GammaToneMapper.java b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/tonemap/GammaToneMapper.java new file mode 100644 index 00000000..7a8ba6fb --- /dev/null +++ b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/tonemap/GammaToneMapper.java @@ -0,0 +1,38 @@ +package com.twelvemonkeys.imageio.plugins.hdr.tonemap; + +/** + * GammaToneMapper. + *

    + * Normalizes values to range [0...1] using: + * + *

    Vout = A Vin\u03b3

    + * + * Where A is constant and \u03b3 is the gamma. + * Values > 1 are clamped. + * + * @author Harald Kuhr + * @author last modified by $Author: harald.kuhr$ + * @version $Id: GammaToneMapper.java,v 1.0 28/07/15 harald.kuhr Exp$ + */ +public final class GammaToneMapper implements ToneMapper { + + private final float constant; + private final float gamma; + + public GammaToneMapper() { + this(0.5f, .25f); + } + + public GammaToneMapper(final float constant, final float gamma) { + this.constant = constant; + this.gamma = gamma; + } + + @Override + public void map(final float[] rgb) { + // Gamma Vo = A * Vi^y + for (int i = 0; i < rgb.length; i++) { + rgb[i] = Math.min(1f, (float) (constant * Math.pow(rgb[i], gamma))); + } + } +} diff --git a/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/tonemap/NullToneMapper.java b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/tonemap/NullToneMapper.java new file mode 100644 index 00000000..ea6ad349 --- /dev/null +++ b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/tonemap/NullToneMapper.java @@ -0,0 +1,18 @@ +package com.twelvemonkeys.imageio.plugins.hdr.tonemap; + +/** + * NullToneMapper. + *

    + * This {@code ToneMapper} does *not* normalize or clamp values + * to range [0...1], but leaves the values as-is. + * Useful for applications that implements custom tone mapping. + * + * @author Harald Kuhr + * @author last modified by $Author: harald.kuhr$ + * @version $Id: NullToneMapper.java,v 1.0 28/07/15 harald.kuhr Exp$ + */ +public final class NullToneMapper implements ToneMapper { + @Override + public void map(float[] rgb) { + } +} diff --git a/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/tonemap/ToneMapper.java b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/tonemap/ToneMapper.java new file mode 100644 index 00000000..2f06374b --- /dev/null +++ b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/tonemap/ToneMapper.java @@ -0,0 +1,12 @@ +package com.twelvemonkeys.imageio.plugins.hdr.tonemap; + +/** + * ToneMapper. + * + * @author Harald Kuhr + * @author last modified by $Author: harald.kuhr$ + * @version $Id: ToneMapper.java,v 1.0 28/07/15 harald.kuhr Exp$ + */ +public interface ToneMapper { + void map(float[] rgb); +} diff --git a/imageio/imageio-hdr/src/main/resources/META-INF/services/javax.imageio.spi.ImageReaderSpi b/imageio/imageio-hdr/src/main/resources/META-INF/services/javax.imageio.spi.ImageReaderSpi new file mode 100755 index 00000000..7af7febe --- /dev/null +++ b/imageio/imageio-hdr/src/main/resources/META-INF/services/javax.imageio.spi.ImageReaderSpi @@ -0,0 +1 @@ +com.twelvemonkeys.imageio.plugins.hdr.HDRImageReaderSpi diff --git a/imageio/imageio-hdr/src/test/java/com/twelvemonkeys/imageio/plugins/hdr/HDRImageReaderTest.java b/imageio/imageio-hdr/src/test/java/com/twelvemonkeys/imageio/plugins/hdr/HDRImageReaderTest.java new file mode 100755 index 00000000..2a57572f --- /dev/null +++ b/imageio/imageio-hdr/src/test/java/com/twelvemonkeys/imageio/plugins/hdr/HDRImageReaderTest.java @@ -0,0 +1,85 @@ +/* + * Copyright (c) 2014, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name "TwelveMonkeys" nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.twelvemonkeys.imageio.plugins.hdr; + +import com.twelvemonkeys.imageio.util.ImageReaderAbstractTest; + +import javax.imageio.spi.ImageReaderSpi; +import java.awt.*; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +/** + * TGAImageReaderTest + * + * @author Harald Kuhr + * @author last modified by $Author: haraldk$ + * @version $Id: TGAImageReaderTest.java,v 1.0 03.07.14 22:28 haraldk Exp$ + */ +public class HDRImageReaderTest extends ImageReaderAbstractTest { + @Override + protected List getTestData() { + return Arrays.asList( + new TestData(getClassLoaderResource("/hdr/memorial_o876.hdr"), new Dimension(512, 768)) + ); + } + + @Override + protected ImageReaderSpi createProvider() { + return new HDRImageReaderSpi(); + } + + @Override + protected Class getReaderClass() { + return HDRImageReader.class; + } + + @Override + protected HDRImageReader createReader() { + return new HDRImageReader(createProvider()); + } + + @Override + protected List getFormatNames() { + return Arrays.asList("HDR", "hdr", "RGBE", "rgbe"); + } + + @Override + protected List getSuffixes() { + return Arrays.asList("hdr", "rgbe", "xyze"); + } + + @Override + protected List getMIMETypes() { + return Collections.singletonList( + "image/vnd.radiance" + ); + } +} diff --git a/imageio/imageio-hdr/src/test/resources/hdr/memorial_o876.hdr b/imageio/imageio-hdr/src/test/resources/hdr/memorial_o876.hdr new file mode 100644 index 0000000000000000000000000000000000000000..c135ae99d9e42e678c5610045d1bc8621705f49f GIT binary patch literal 1341352 zcmZU*2~1Oo-}igxKe9vVN?Y2}(n5izZ zP}YLQ3Pr4?SZZ0S5FijB5HLV6Krm`FYBXvzYBXvzYB2YEaQ@Hp-g_f-Jv~cJ&WG>v zJEHhKTet1pnx2&Gn7LG-Bf}1Wz{> z2@Ct@&M_rpPukX;En%U72af(${9nfp75~?f1BV(sN=u>^{@X+ zmUHfT!;oIrs%~qmn(EYD?3sR4-JtmL_SwR?;i9SIoPPYK!qnT}^>wi4+U@&~?k!z0 z8coeLa+RukaD3_J!s4B^n-jX4iwh55-&~v@)1T?+zh|u*e6ChcepbjUYg;XYx(_d& z-kcw?_IB$hZ!1;x>W<3Z*O!d_231wPLU#YQ>0+x%eeS$W)izl5^zltu+qk*%?(OG~ zU%vjJP+ME3Ue?ytRex5sjal`bCPUL5+08c<74JVNs~;@QRa~#I^fj&aEH`T!ho9eB zSy`B0TAa1?&(F@>zc#bFbnV5hwRf79R<)|8`qSN)&)$5Hz5n#`{;jpOm8FSEi?(i1 zHoiEtP;ss9YX8vi_|&TGp~WKmBCnRMe~{HS)-|y_^xPY%@S^_MOgJM;#lxxasK zsNdAnKVTWInYj4z@}gONsiW@6xW4MS?9s!U_g;RfZP1zI%{`T$AKkri`~F*vu1eNz zdT>W~sc+!U!kyLYL*rKlr=Q+>^`)}QU@)nlY2K=5MtcVajh1`sgLM^8pFe-ATz$~n zYt{6w7*tP(yDty)beqij4y{_-`gwKwZu9$UgG{CT`1sknN_S=9`lFBYb8Rgn@AWc; zD0xdxNMKMvNKjx>RQTr5h*(cwVPbr2bZm5(G*~K)i{<+G`v>Pn28P5YCMPDx#)L-& z2L(xk!(t*6lHwAQ5>gU3hlD32rzOWH#7ILTqSF(DBa*~H`M>Q*P0dL=r2Jo+(|;a0 zP?*0rV|&rjT^U)~|G7O!TU7L)h57k=_sZ&3Mf>u9%Fp?6Pk#3CJdL_GE%)HzoHOb( z&8^yVSvmhz{Hx)o!efUo{#4%F@V`stzvTS!(;4&L{H~t8`4_v+{H%;WrBY1(DKGlD z_-}1fy{f9FrlEZQ&sDYcy86mmjZ$}}{!DIec3SH0)H4-THR`5aYV{eFQdLt~@%zEN zw4K@ik(al zG&WBp^7io&d-?fG{KQ^ju~(ubROHF$y9-2~o(X%TK?V6~iDGYWUq6YT!uP-Y0zyJV zL!_ahQi*#?S}tFlD*a(gR8iKB`0`^rC0v126c8QHXSuub1p*O|%cZ)}DKvUqoTpIe zA>c8YEH1&56nO-?3mKt-94xuzbS#TX5%NU>64i?<61s2BA_LL(@cFqR1dGFSe6 zGKC@%dI^M{d=9<=A;+0QrDNS(o>=LZ^Ef;{moMUrL?RB?%g0}c1-L90 z&(Fi1&n3Gug)|C^?bB07!~Ti}x^d~s-^uP8Vm!7n;BK^htn;uYn)JzXr`zTH>6eRq0TBtJAJ zrZ6JOM=a(FcpNs9#r5L5bHyT`ATOaLL>%ZNlDM;(ZcGNvS^|R>| zGS!|+b)h@c$+Rkp3*CuMvbS-vwYMiZ*(mJdZSCys?d)uA?Cc#Vj;B0JhT+Bs3UE}LwL1spaxIoaDgV3%#}$SyWEo4!}t2sUl9v9on_a%Ix^&dyF0 zCkF=`8+$tkM?ol$L}786oBk{*DXl4~K3!STaJs6*dU{hyX=!OqSv`Jh%H?JC<&|Ys z<<(`j<>h5%rKO6p?@Co=j-_Q~WyA~R<-`k$vdYqqvg&eW*>~k<%KlYerYd(VBNoR} zrKRe!O{JwJCCbt>W%AOxlJ7S@bhg}%c)PTuOo3HYmsXX1k7cS)SC^eZJiq=Yh61x-PWd6$(w3#n|0?e49tI0 ze5tB>_h@yv{Y9Go#fZ`R;K_sQE7NA9QCnRpldZS+PcGlMwXn2&b3ol< zomqW+Z|(a0Xh%cGs9L?W{&-n#(CaPwy7rfy%1`g#tj$ggStgdxn)|FbyN52TS{qdL z^DByF*{r&Ky}ncap#9n7=FhjT-&^~1zU}_Z{N((t)f?CDzBNsbXw8?KHHzVjqjgOm z?^ZU~FJ4~l?3-L$nl-*SqkB+UfA7}7O7HA~Q9C&~I@I4~>M<$5sxEa~uZ%Y8W|j<- zmf1HSK0mpC@4-{kMa$UA;>zOm*yQlAfqSe*u>Pe8;kQ(M#Z#h z!f5O?cD8hO8v9okuV`wOiuv;w&TIAE29w!zQQy&_)AtPzjSgOzUA+9Z`$mQ7*{w$} zUdYeL%(Hh?LqlhmS`4?JbUkaheq-(N*N+X_`Zv>81~p2fdB9S4|JL34{^_x6&(~hB zuj$Q3v*F>hSLZGnEdAz-hL7s=b?a|l-g&ih!+5Fh%0=_|=-crgU~_Pw$7HymRjZqu z*XI{jUddmLtiFE#sZL`Un!mO7Y`sObvZ$SClQ{>)7KQ`|OC*7QnNi^p(cw{vo~a^X zLQGt2QgC>i~=$x>$v|YKW2{|>{TTY!kw!bhhYuE1lExEZlNAgnAGIF!h_MAAe z>!fU7R=zrIUt0N(%3re1{C@P8Un_pfKXvd>@xdcUP96Q__pD<_vkx4~D@;39Twh$+ zS)21y#&3s|KOg<2vb^L!tv_Y_k&~@z`oI79`P45(X~p~YVJq3WdlUZHx;JZoaq*6< zqldQ_r5B$%e)7=4g9i_7OU}&Of1tQ1KQ|w6OG${xN!@igJufT$NO2B<*zBCVZ4rk9 zSpGrM5O%0L7iV%Fm&fC9xgLV}=)fpoCR`|XbLV^FbS@N$#W*!e{3ZT=KEhDGpN9vZ z$L5GYn*F)kVxs*;F+O6@&ezvh;^$WtAPWi!kxKdgdAlN+xq%6Pmj0fR z@7(cMUlK2f!sqjGlBLky_;ecAU%>bD;xRY`F$7$$7;j2_yu7@HVu6t5!C||zm_G6- z4oxHyi-c@H50S`=>zgSG7qi^hY!-`!(>nO%MicTQ5AEL)#|V-}Mg%cf?gB5dk2GfI z{-U__BR?@6$P}(CjY^@=C}IyF%AL(8aVb;=RF_|<5i$bT<*$g_J z#-P#YY%Z0%8%A%WK8_R6*7J;VH)(y6O zhn1f#w=XRP*h5KHRR1U0UTUW_EiIJ~UOZj0o^S6NUU{pk{4A@ge6VCXdu4LUY?#;fTrtaf zje~O!9=y4;Fk~>ESJyYFE8kb@2CuI?x;?)(qgQlJuHL7TzotgD+GxjNe4YtVP;&TCb`s#SaL+TD>hb?5cUFR!0IeE4YApqrjrU0qq3 zn;W-UOr1?Hul30W2ImHi^`p1@uMCY0O-wi5*Dbt#D^q@!HJquD*VHw%>N;9K&6(A* z`|mX4cV4t#y4c;*W9h##I5;}Jw6eA|H#I$|xzqi82m;J()acK5_B@_mulV?Jz4fKV zeA!~uG&MIiX!ckf!)1?BABQJ0mqcEp1=I zsbj^(#re4zsRyO$S$pyi$H$+_%Fo)>a4JocCrc~LsM2O-*6cl+-Tdn>@?F1Y=l@!~ zfB(Tlza1{l%PT(c`;nuihjVsS9X@j4wE4%q?d8pvb8CM)di<9^PX4_A&$J7fC#rrs z`E$kbL-{F1`T0eA_hw{erKhIv+?!eW(~h*0rNx$+kyf^*sM^NJBQ8ULY_gL#K(sF3j+mI zu1^ro?;^1`_$3tjY=AA$-``IZDhl%Q;Cpy**`6R3q?*_p5Bwwn z!NI`+xx%2lZB+4=BtMRCM7%g8I3^)s%MSrt4yR`cd;}6`A0D6LN+HvQLIy(;B@~E6 zJThJs5O4!$6=F|c9~w`Obi;snp& zOVh)$+_*jxmOCgU_VW?@g{GeM? z6e#-p)mLJpfp;nHYK@QF+YZd^fBt|Ty2 z;>iyU2=tFk67i#>;u82#A(Eib2&um$lo!clivlA;N;rZ(KpTkU=;GvzO*`6?05>|DY>UP0$qpc(gJTu&=IsQj zgQ_HjBMF-%5o>qCZaO+D zoMQl2tkupQ3)$LGq0DTZTpUS+q64#_<~G@aYu|4o@Men}pv|62p*z|;I@wm)IXl?d z*}0I#JSy9bMZlq??liza5Tq7hYXR8WPuu==`ZV;KvTPGUErMakM?H|CE|E(zB zM1ZaVI*w3PSOyHNEwd{pL|iFe(UpJqx3;{d?0c-GrraLz0mI5l>wz#i=yn!#Ybe>^ z8u7XY@{WLF2{;Eb)|5Nop4hcgh%_bS8bP@Y6<7BSbEO3497@aZI;YXRYQ$RSy@^2d`M$jy}oR{bIxeif9f}M z&)>Yc_Tb)fkI~Sklq+@TtKlBbtlho6ywqP;-#dHr*7empk6zrnHr`z)uU%F==rHIn zUm5s(X1Q7R>fW7|)s^x7hfj@{O@l8@Yx8FsWYzU&+wYi{WXw3LrrEhd}bl7_J{Y&NRhTfhf%kbQI`)mE+gnW8VuGc?b1w@zMpwbRr;FlZf|Tw1*jIXE{rH(`*?Xl@N%v2=G`Y*U_V>9o9>Qz(?G%I+4O zMqS^iX>L$e*VWW0pU-!^yKcSO-amWq?2C1cWqjq{hugBLiyGDXWTj5>-ySZv)O9Cz5b~}-O|=}{!Gin+s9|$ zRNT6)y`VRA_xDYAh7@tr$& zU%#2qt8cuLNlt}jOVW3z>`aM{*enf?^6(^1m!5+7l+7W@NhzVB0v|u0^ss=S@c4v; zq@?)GVPRo`LBY~siEltyOe{>xn9b7Q&C#(bDM>qbZcj;!4-4`Sjuhv{rls%Nn|v(& zmmN{Z4i@DX6lA9s6eVS)XPwMQ+rI}4%*x$cns->1wX5b-rTSpnsdUYe1IIL)jJ>D# z?kn22FTd#YFI$f%q^IvIJf=L6bvpOR$(?_m%RgM)Q2ZbNyXstP=f(D28L9bMM~`-# z>MX51b#ia&{-T2H%-rnMjIr5J5Fpwh;L#DgMqVm zNLYZk1i}geP6!Lq&);7mk@|{=|YhYl^&BMf>B52 z2*5EeU%;VoSRy|#)1Bib#s&yg!rB@4yObuT2zvZN`nDOVUb+8 z_@jZzX3|&$dI=AX18G60yD|B0oKtQz0WiwO2ZTVPP)wt<0D3anmCR<7SR{%o&pRkI z2+}l2>Jc96#;KskE{CA8jAM>>Nh;IdpDot?-e zIs-}!#HC}eT-a25J4YKQ8?v*r4VYrd}MX4hYwZXX34Z1bLcT|=&!R)Llt%TNdC9KO0+7h>?0bDym)NODL zD(|!nSa%uN>DFpm z+q$k*sL!2kQLL+E^POD_uixK&r88aDSB{ywhh`tFK3rKELyAg_j`x0RZ&H*UcRb+S2b6bX6LWX&yJ6d_FIf+s~*Y5ELTRSt*dXQw0&m7 zMPt8qe703Bmn#%st5j_o#Y%VG>-+Du3v#tiS3fy)vD<9!>KPcDn4O!S9-W$;p1U?} z?R-6?y585*scAc>QJm@QFb-5du5D;)XdL>~*izSYrn#>2*QUltuJl@mhQ`Nx zwelD9Gh=Nx+A2DSUsN~g`lnaktgk$H`f&C3-B#;TN3AUA!0yzYJL3}*qBh5dhlL_k z@)3JRBPxoIj!#QXiWT|!`g%nL1&2l^#3n$~Nkfsz1qVrj!-6ILK{4_1v9X&a(#Y84 zgq?{=J9lqSN!YwOFvLG)^WN-?oYdG|s;n)C_ZJrx=H+JXER4#^$}TvuZCh$iZVkY8 zqP*}&+5R;3ufM5w|Gp!?`PV;=$anwPTmbeI6{epmJaqW@!G!$ygZuJ|e>qun=%^){Gk^T)#E-|0rXBn7_^*45PaQq6H>)srZ(dGj=C0K3nR|cPmY$uF ze>^E;|DoeMcBKCL$EiO~9XWh3BR1>6zT(0{>`!)9+V=Rcg1p_^({eJmyPvWTE9I@mWp)Q7>Lu{d0wpN}Xi7(v$ts{H)Ge8@N-F%%qA0*8(b z-^U&ABGC#`Fl5Z|c*JJ-5qKiDj66}Cy4^>}5cvnj2LBN6D^1#&otYXH?C+BlFA3rb zDOC6PI35*fbK|*EnBD>2&hRIprbP@A#1f0c@egN^DDkjD{lpM-UOrG~R4QGV7=^QV z1QZxHCGzqrjNo%2S=?A0Z=B5C=nOxIzrf50PtOpkJBuUq@(+=C`6HGJi7EW+MEn++ zt4QSM<%N9EgU16CNrXw~$|g|+Tn~{y%up)Tm5M#UyAW~U7Z*+`zy>Xgq{XkMn8*kDlw_F;lZvpDMWVV2gx-=6sU#>UhA#<<7yBjzB1H4Te-Ouw#c*}=@QL*E z^A8LXkN_6K!E=JtqGA6bAKA#Z*c=L?CBm$QZwhcRz!c<$pconM z*@ez>u?GPJa3^hSpn04fUC1PR#|@gnDx|nNL&AX&3I`6s68y6#A@>4J@fd*?@xb0i zVe|ba7fOwNE@7DR*c6fjTt;w{M5n_%rNW{G)|}~d7e_k>TU&c78AKyNC;~~2uC7E# zwgEOf0+;YVnJ#uV6hfbpsT7D+g&o+5XwJsYk?!oEuy=--L@WoviO(x+h2R>vYiCcP zA~hrt6olfmwIwv1BMBw}jq+VdBec=?phOL5a^?T)N!n}}kqQECa3uc`Y*ia{QKs59RCfwDui;j8}LIU_&q+|NZ^f7Zdjse18?QubX)z6 zwdMImt5K(EKifI-s^;ujO-r4k>cNH18z0_%s?!-w=bulQv<>EorH8j}%ow!IEj6Fk z6}3G>Gnbp|w3fxSfhv`GXzJGT&AYd6-@12mtkE*9S$k(P8OE*i2F-ZYr&qUcEGa-Ef4qC4Vv%O&RR!J>s>ASvV<%H`ItcOI!mUaDI(+H+dX%bLsA-d^q=8lM;& z9~mAVnV6ir{qXv5%eD3wSF{(~&Ygu3*`jaN_YR-?tX9KioK&hCnkrU1A5Zj~%!705 zhMRR4dxvz_r#qE*&X3GaPY-v<>QrAIUf0gnSrm2s=BtCP4X^Hgt$U|b-TU;qW6*f* zy3uU8dj0wIsA=xm?C_96F*V%N)BCmg&g_l*&)-!j6^e$g8Qsj8{_gWF4chaK%i5{g zA?wK4)hpKis{^K%H_PLb!%H2CJEPj>p|{OCy>(*c-Mz_`8}rlis|(l1M`ir%ogmYe z_{hy+kZm!ZBK%p8Q{B!jq0uR6J4N1pzJaOeKKO@4#wW)m$8HV|lm_JF2KWR^qon}> z!P3~oC~3gv$mrO_q@ zAI{6mugz%RuPiJ-AUl$^b4Ti#N_j!{?(NNgru;|7fqjVG4i?9y6dpKuQOVyw7OD$#7R%{f$dBR)))xqVl9PG(M6 zR$fx-uGG|B89BR;L_=nPZ4u#8zohU$8e7CfjfCgH^`rA6vLt{TayPM;7m>b6Ac6#e z{19)Vmf(()sfUQ~B?3SgbT!-3CZ-h^km3CNh~@KA{H7WEVeW{n(N{k;SaMjl*Z$G zK@ZaC0tzGasF*I2_=*S(P!TEkYdg(I@Qt9&Jpk-L>pXCvb_^9 z$EMra**HLt;Z?+DP7c^9h)5R_j*Je01|>%%gEqGIbQqJaBv_-!`dnDtIicOy zMDhli=HTKaajxbd&#e0d0-{HYV$UE4vM_l|#2F z|E`2d`3-a`0Idp!BO&1MTMyJJpw5(K!|*BzH?kUpQ*0z+KwEX$MipeENumbUh|kKQ z*yOlZlzs;^D&SPAN?akzzCrE(#Mu8p4gC@&V2maS;zFXHQi{F{;9T}MY}TgIO@w0m zCfFA5&5ZVUwVl;oG><*}q-berZK+qjG`CN^_#&&n*mY6&W~5hNBUca2UYi^-HMOYg zD?WYw)O=}pYGL?nwaPfrq0mo`PA%PByL)SC?e1J#!|+?vr?Xu~^HhIj=kpHvrzba- zW+w+NYxfQPy@R)UhX*w0jmhi63 zEnVh;KI`z<@X&x+dqH)k(=a*FYQE89=xrT&@$}iPwHvF84KFPNQ?u8mCkCxJ!ri{J=PiiN z2Eeni@k^60UanZ{mi3<(y0x9{ZRZUzY7IJ_$uetIw$!RBwF~p-9*d{^V(xgwehq3($Hn2saAXM@tvjBn|JR#UH_z5Z1`Ar*`V*JQOKX&9lSI> zcJ?w#n^x2Ls@J!#FD&0))y!OJ9PiT^W-4(Qmq%t6t`1IL8?}zyuUc7?-Ke}FF8!Gk(acN&VsE!F>g}+36{Hc}dxOviBG4 z-jnm=f!vIy^k4T@7UakdXXF&rsQ%2?{CcWB{nU@S2MdZ09y;{vj~Q7xd-vuZJbkF* zm%|6s@_)Oq@9%u|Pp5v`VL05-u4_G&msL;{T9BNZp1Y@M@2;I$8AXSG2iW%J5d#YaA5!D{ps2J_7xQrW&?|Qgb5~OIDk-xkZ1PjbO2W%5Y!qG zo_*)2u%T_T!?JWbbQrMb1X{r=bUICN3HcXz23$Ha(YLX;BRSXrRF00e4xl4+m5l=o zPsl8ok$4q8CrAlGIzfHm;ILanv4y}L85I&27e^e43mj4>+f6V`0WLzh+1e0511@dJ zG$$xEh)AFgZ$i=8+Piph`NAfM9|9FErz_DTA&B$;u8}~t5x(Q!$lv}uW~+tCs3>>- zH`556Rg1ihXi3(Tbwjl^qGnQEZu^aSRi!qNU8SXU-xOO50M-ICQiW0^5v|z}(Hiav zeOLSc0~_(G;+tASu109LI&@!3%CI4VhX@1#IViQN5_ReK|AyMY(`)_uvn}egXHE0# za)n%`s%uoe?rRx;EBjERH<>!$5BKPG=W1#+CiA&^CC=~4ukSxsoI7uxTwEG!SJk#E zYWuG(T$`FET*&)(233Yz4hsS>~hls-SEfrhC%Dd)L?hxqm_B%$XvsP zs^Kc_oj#pPGd8!pFgrXkdvD1+WL}$8ndQ3c;|sG^+2=YVjL3fL;OO|!phDSTY#Y4P zI5=gUHC?#&{PwLIi?h=`pEZ_|sj2CSp~1nc{RWM!>cPa-;qgiH%cw&$pcG)C~0Z-=1u&RVo|Ktr;ydAKGU>DjQqcQ2Mu`)o3!9I)+D{er+=tI?vY0 zs-7+{TzGT&#yO(}g9mLY`G*hh>Ylx=XseSAHR~+HW%1A&VHy@b(;INl@BL}=Uyq)%FnH>O&=c5 zBbQsKQPrL6wxUXE867km`x{1I$OP%hiP2%e=<0bU*+PO^{n&6e@jUu*R zdU#NPG)y81*c`h#B+xe?C?GYn7#+f}sOYG0NpL`DP(Vatoxu?WrT7unAi^ZE7?R81M;PwyE)jRnC=W3;6dRF$y@;keR&!; z%-35aqLI1oBKW>67D*W3=i@74a0IAu2nFbe2)w+r60uf)Ur|UP${${-A}V{s67_+t zN7#x!;c>C(S;8}vqQl5V^U{Ow?Iqy*#vPRZA!7ylVWI&{^MFW$KtqFrOcr`FnF6X8 zygV{hK*uL}EEWTsbce6W;)Y5BS&(%^-=6~k$7Jz=HRv?tYp78&+(lfjD@u?I8jC8R zl1T6xA&`)pQHU2=6jv`ozcH{R5fL6oy#zZ)%8W|fCCE=j`2yzL~ZgF;I(4mPOs6@a8w&A=_tO>kg(OsEr8iV2r z*~e7S9Vx^|z%@EDwg9k;PSA~t+>63?1=rw2f^`n~ftGS`A`zw|!YmL$VY>wyjS80$ z&3Q;QWLg_cLo*)@6T*IUh98K=2oU4qxFMG|%93d7yMRgdHBea24tS5^Wn!6C+I6=ZQvlmY#bVDlN2Wxn+<>yp&!^~ zYXdgIzr=Q(z%vIFNg(K$#GYacSpNp;h&9_ex_SzH8lcjMy5UBNgrFMAB}6AuQKrJZ z9NkF8zkx=iYf7R!QeLk5Ce!c;;;6n%S&r%>00u6h@81QeHElr6g^*7FHX%`v+;Ab) zAm5pdfUOGQTH^-ON;le-axl$tL#z?$88Ahdm?&?aM)C)%bc1O1-*!+5p4DIpL~Q`# z-(}ShYD5!rL#Lg)Y3giN%4&?(xhFMnu|CV!MTFmY1hGl(nC=!*dG@({rn<_a42R)o8Ad%qzN$rtwSD=W4E0 zeth@t?)>=G-qF=(W~+7dRkv(WZ*1z6t=$~GcIM1_n@m&Dtyuo_{F>D~Fx}L$Ff=_q zIrp?}K`}aMFqyi$Os$<~y2s|m?@lag4chtI9<_4*a@%?H*u<@&w(iN!x%%$gZ_I<$ zE&5KaYSHknrN?4MR|3SDY9)3Be|%$MZgy<2{#IxImC5n(;UNMp zI_$tg|7GjM_|T0f6D=3?o%$}*=l(BivXy)COKUGN3ss}4Z)s}QwzXe07|uR>X_hIC z`hk&|rNxEGp^*uz;nTSG>#b4iWwWWvaG|?P*V5UDT_61L^h|Surd8H7E2}???tga| zW&m0mn>4K#jTg0drk~tzF|^9pWwM%kPi~rDnpWD4)}e{E%CCx7uRf|?KKficJ=m zvVx_XV`3o@M2Vh>qTNZ-kT{%1eSIWBnW2D~e{@(tKwto-e{uo>g7R~7U^z;Ob4o-= zfHXfOIx-gdT2eyN_U(yb!7-Agh}87-?7dlOyNcs~Id-f#KRa#5&fLPZoZOs0GlPo@ z_vP$Q`{VTC{aHE91+v1-pVLk>R2}^>FMog9-sAiB?=L?1Tl�MF&#T(lau$x2LA0 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

    tAm~cIup_sOY)~lR2Y(8fQmR;I~_82a&UHr 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

    *D40 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

    |d34vA7+~K#;56|04f4_H+Fvb>4 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 z%0D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 literal 0 HcmV?d00001 diff --git a/imageio/pom.xml b/imageio/pom.xml index 019c00ac..1e58b424 100644 --- a/imageio/pom.xml +++ b/imageio/pom.xml @@ -30,6 +30,7 @@ imageio-bmp + imageio-hdr imageio-icns imageio-iff imageio-jpeg From bef0b762fafe002002ad34ca1840ab54c1c37a84 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Wed, 29 Jul 2015 09:57:33 +0200 Subject: [PATCH 072/182] TMI-157: Added license headers, and readRaster method for access to the RGBE data. --- .../imageio/plugins/hdr/HDR.java | 28 ++++++ .../imageio/plugins/hdr/HDRHeader.java | 28 ++++++ .../plugins/hdr/HDRImageReadParam.java | 28 ++++++ .../imageio/plugins/hdr/HDRImageReader.java | 92 +++++++++++++++++++ .../plugins/hdr/HDRImageReaderSpi.java | 28 ++++++ .../imageio/plugins/hdr/HDRMetadata.java | 2 +- .../imageio/plugins/hdr/HDRProviderInfo.java | 28 ++++++ .../hdr/tonemap/DefaultToneMapper.java | 28 ++++++ .../plugins/hdr/tonemap/GammaToneMapper.java | 28 ++++++ .../plugins/hdr/tonemap/NullToneMapper.java | 28 ++++++ .../plugins/hdr/tonemap/ToneMapper.java | 28 ++++++ .../plugins/hdr/HDRImageReaderTest.java | 2 +- 12 files changed, 346 insertions(+), 2 deletions(-) diff --git a/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDR.java b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDR.java index f85f4b9a..170b8da0 100644 --- a/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDR.java +++ b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDR.java @@ -1,3 +1,31 @@ +/* + * Copyright (c) 2015, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name "TwelveMonkeys" nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.plugins.hdr; /** diff --git a/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRHeader.java b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRHeader.java index b7fe68a9..7ce3ffa3 100644 --- a/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRHeader.java +++ b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRHeader.java @@ -1,3 +1,31 @@ +/* + * Copyright (c) 2015, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name "TwelveMonkeys" nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.plugins.hdr; import javax.imageio.IIOException; diff --git a/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRImageReadParam.java b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRImageReadParam.java index 6a8ee9ea..32490da5 100644 --- a/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRImageReadParam.java +++ b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRImageReadParam.java @@ -1,3 +1,31 @@ +/* + * Copyright (c) 2015, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name "TwelveMonkeys" nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.plugins.hdr; import com.twelvemonkeys.imageio.plugins.hdr.tonemap.DefaultToneMapper; diff --git a/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRImageReader.java b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRImageReader.java index 0513cf86..e24fb5fc 100644 --- a/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRImageReader.java +++ b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRImageReader.java @@ -1,3 +1,31 @@ +/* + * Copyright (c) 2015, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name "TwelveMonkeys" nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.plugins.hdr; import com.twelvemonkeys.imageio.ImageReaderBase; @@ -13,6 +41,7 @@ import java.awt.*; import java.awt.color.ColorSpace; import java.awt.image.BufferedImage; import java.awt.image.DataBuffer; +import java.awt.image.Raster; import java.awt.image.WritableRaster; import java.io.File; import java.io.IOException; @@ -143,6 +172,69 @@ public final class HDRImageReader extends ImageReaderBase { return destination; } + @Override + public boolean canReadRaster() { + return true; + } + + @Override + public Raster readRaster(final int imageIndex, final ImageReadParam param) throws IOException { + checkBounds(imageIndex); + readHeader(); + + int width = getWidth(imageIndex); + int height = getHeight(imageIndex); + + Rectangle srcRegion = new Rectangle(); + Rectangle destRegion = new Rectangle(); + computeRegions(param, width, height, null, srcRegion, destRegion); + destRegion = srcRegion; // We don't really care about destination for raster + + BufferedImage destination = new BufferedImage(srcRegion.width, srcRegion.height, BufferedImage.TYPE_4BYTE_ABGR); + WritableRaster raster = destination.getRaster(); + + int xSub = param != null ? param.getSourceXSubsampling() : 1; + int ySub = param != null ? param.getSourceYSubsampling() : 1; + + byte[] rowRGBE = new byte[width * 4]; + byte[] pixelRGBE = new byte[width]; + + processImageStarted(imageIndex); + + // Process one scanline of RGBE data at a time + for (int srcY = 0; srcY < height; srcY++) { + int dstY = ((srcY - srcRegion.y) / ySub) + destRegion.y; + if (dstY >= destRegion.height) { + break; + } + + RGBE.readPixelsRawRLE(imageInput, rowRGBE, 0, width, 1); + + if (srcY % ySub == 0 && dstY >= destRegion.y) { + for (int srcX = srcRegion.x; srcX < srcRegion.x + srcRegion.width; srcX += xSub) { + int dstX = ((srcX - srcRegion.x) / xSub) + destRegion.x; + if (dstX >= destRegion.width) { + break; + } + + System.arraycopy(rowRGBE, srcX * 4, pixelRGBE, 0, 4); + raster.setDataElements(dstX, dstY, pixelRGBE); + } + } + + processImageProgress(srcY * 100f / height); + + if (abortRequested()) { + processReadAborted(); + break; + } + } + + processImageComplete(); + + return destination.getRaster(); + } + @Override public ImageReadParam getDefaultReadParam() { return new HDRImageReadParam(); diff --git a/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRImageReaderSpi.java b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRImageReaderSpi.java index 0624e2f6..380313be 100644 --- a/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRImageReaderSpi.java +++ b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRImageReaderSpi.java @@ -1,3 +1,31 @@ +/* + * Copyright (c) 2015, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name "TwelveMonkeys" nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.plugins.hdr; import com.twelvemonkeys.imageio.spi.ImageReaderSpiBase; diff --git a/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRMetadata.java b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRMetadata.java index 52cabaeb..cd5422eb 100755 --- a/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRMetadata.java +++ b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRMetadata.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, Harald Kuhr + * Copyright (c) 2015, Harald Kuhr * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRProviderInfo.java b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRProviderInfo.java index ab1b2b1f..a11a215f 100644 --- a/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRProviderInfo.java +++ b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRProviderInfo.java @@ -1,3 +1,31 @@ +/* + * Copyright (c) 2015, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name "TwelveMonkeys" nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.plugins.hdr; import com.twelvemonkeys.imageio.spi.ReaderWriterProviderInfo; diff --git a/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/tonemap/DefaultToneMapper.java b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/tonemap/DefaultToneMapper.java index 740c0913..1a211886 100644 --- a/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/tonemap/DefaultToneMapper.java +++ b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/tonemap/DefaultToneMapper.java @@ -1,3 +1,31 @@ +/* + * Copyright (c) 2015, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name "TwelveMonkeys" nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.plugins.hdr.tonemap; /** diff --git a/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/tonemap/GammaToneMapper.java b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/tonemap/GammaToneMapper.java index 7a8ba6fb..285b6955 100644 --- a/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/tonemap/GammaToneMapper.java +++ b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/tonemap/GammaToneMapper.java @@ -1,3 +1,31 @@ +/* + * Copyright (c) 2015, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name "TwelveMonkeys" nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.plugins.hdr.tonemap; /** diff --git a/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/tonemap/NullToneMapper.java b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/tonemap/NullToneMapper.java index ea6ad349..33de6478 100644 --- a/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/tonemap/NullToneMapper.java +++ b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/tonemap/NullToneMapper.java @@ -1,3 +1,31 @@ +/* + * Copyright (c) 2015, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name "TwelveMonkeys" nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.plugins.hdr.tonemap; /** diff --git a/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/tonemap/ToneMapper.java b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/tonemap/ToneMapper.java index 2f06374b..37d8f222 100644 --- a/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/tonemap/ToneMapper.java +++ b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/tonemap/ToneMapper.java @@ -1,3 +1,31 @@ +/* + * Copyright (c) 2015, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name "TwelveMonkeys" nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.plugins.hdr.tonemap; /** diff --git a/imageio/imageio-hdr/src/test/java/com/twelvemonkeys/imageio/plugins/hdr/HDRImageReaderTest.java b/imageio/imageio-hdr/src/test/java/com/twelvemonkeys/imageio/plugins/hdr/HDRImageReaderTest.java index 2a57572f..7baae6be 100755 --- a/imageio/imageio-hdr/src/test/java/com/twelvemonkeys/imageio/plugins/hdr/HDRImageReaderTest.java +++ b/imageio/imageio-hdr/src/test/java/com/twelvemonkeys/imageio/plugins/hdr/HDRImageReaderTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, Harald Kuhr + * Copyright (c) 2015, Harald Kuhr * All rights reserved. * * Redistribution and use in source and binary forms, with or without From e1b5e6bfc949fdd4674b7cde2effe7eb1388af1b Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Fri, 31 Jul 2015 13:57:22 +0200 Subject: [PATCH 073/182] TMI-157: Added imageio-hdr to BOM. --- bom/pom.xml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/bom/pom.xml b/bom/pom.xml index 39c81a74..b72640f2 100644 --- a/bom/pom.xml +++ b/bom/pom.xml @@ -58,6 +58,11 @@ imageio-bmp ${project.version} + + com.twelvemonkeys.imageio + imageio-hdr + ${project.version} + com.twelvemonkeys.imageio imageio-icns From 998851c9fbe1e4dbaf0b15ba98e84141c35b249a Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Tue, 4 Aug 2015 08:28:29 +0200 Subject: [PATCH 074/182] TMI-158: Fixed build instructions. Building with Java 8 should now work without any special settings. --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index c8bb14d5..9dfc768b 100644 --- a/README.md +++ b/README.md @@ -422,9 +422,9 @@ Build the project (using [Maven](http://maven.apache.org/download.cgi)): $ mvn package -Currently, the only supported JDK for making a build is Oracle JDK 7.x. +Currently, the recommended JDK for making a build is Oracle JDK 7.x or 8.x. -It's possible to build using OpenJDK, but some tests will fail due to some minor differences between the color management systems used. You will need to either disable the tests in question, or build without tests altogether. To build using JDK 8, you need to pass `-Dsun.java2d.cmm=sun.java2d.cmm.kcms.KcmsServiceProvider` to revert to the color manangement system used in Java 7. +It's possible to build using OpenJDK, but some tests might fail due to some minor differences between the color management systems used. You will need to either disable the tests in question, or build without tests altogether. Because the unit tests needs quite a bit of memory to run, you might have to set the environment variable `MAVEN_OPTS` to give the Java process that runs Maven more memory. I suggest something like `-Xmx512m -XX:MaxPermSize=256m`. From 517fc770bdcb238cc5eaa7f4327683737ff46465 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Wed, 12 Aug 2015 10:23:15 +0200 Subject: [PATCH 075/182] TMI-136: Better TIFF (IFD) format write support. --- .../imageio/metadata/exif/EXIFEntry.java | 7 +- .../imageio/metadata/exif/EXIFWriter.java | 72 +++++++++++++++++-- .../imageio/metadata/exif/TIFF.java | 2 + 3 files changed, 73 insertions(+), 8 deletions(-) diff --git a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/EXIFEntry.java b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/EXIFEntry.java index 3fcfadf8..fe51a31d 100644 --- a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/EXIFEntry.java +++ b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/EXIFEntry.java @@ -38,13 +38,14 @@ import com.twelvemonkeys.imageio.metadata.AbstractEntry; * @version $Id: EXIFEntry.java,v 1.0 Nov 13, 2009 5:47:35 PM haraldk Exp$ */ final class EXIFEntry extends AbstractEntry { + // TODO: Expose as TIFFEntry final private short type; EXIFEntry(final int identifier, final Object value, final short type) { super(identifier, value); if (type < 1 || type >= TIFF.TYPE_NAMES.length) { - throw new IllegalArgumentException(String.format("Illegal EXIF type: %s", type)); + throw new IllegalArgumentException(String.format("Illegal TIFF type: %s", type)); } // TODO: Validate that type is applicable to value? @@ -114,6 +115,8 @@ final class EXIFEntry extends AbstractEntry { return "PlanarConfiguration"; case TIFF.TAG_RESOLUTION_UNIT: return "ResolutionUnit"; + case TIFF.TAG_PAGE_NAME: + return "PageName"; case TIFF.TAG_PAGE_NUMBER: return "PageNumber"; case TIFF.TAG_SOFTWARE: @@ -228,6 +231,8 @@ final class EXIFEntry extends AbstractEntry { return "DateTimeDigitized"; case EXIF.TAG_IMAGE_NUMBER: return "ImageNumber"; + case EXIF.TAG_MAKER_NOTE: + return "MakerNote"; case EXIF.TAG_USER_COMMENT: return "UserComment"; diff --git a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/EXIFWriter.java b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/EXIFWriter.java index 66892cb1..9f0881f5 100644 --- a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/EXIFWriter.java +++ b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/EXIFWriter.java @@ -40,6 +40,7 @@ import java.io.IOException; import java.lang.reflect.Array; import java.nio.ByteOrder; import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; import java.util.*; /** @@ -248,9 +249,12 @@ public final class EXIFWriter extends MetadataWriter { switch (type) { case TIFF.TYPE_UNDEFINED: case TIFF.TYPE_BYTE: + case TIFF.TYPE_SBYTE: stream.write((byte[]) value); break; + case TIFF.TYPE_SHORT: + case TIFF.TYPE_SSHORT: short[] shorts; if (value instanceof short[]) { @@ -279,7 +283,9 @@ public final class EXIFWriter extends MetadataWriter { stream.writeShorts(shorts, 0, shorts.length); break; + case TIFF.TYPE_LONG: + case TIFF.TYPE_SLONG: int[] ints; if (value instanceof int[]) { @@ -298,17 +304,45 @@ public final class EXIFWriter extends MetadataWriter { } stream.writeInts(ints, 0, ints.length); - break; case TIFF.TYPE_RATIONAL: + case TIFF.TYPE_SRATIONAL: Rational[] rationals = (Rational[]) value; for (Rational rational : rationals) { stream.writeInt((int) rational.numerator()); stream.writeInt((int) rational.denominator()); } - // TODO: More types + break; + + case TIFF.TYPE_FLOAT: + float[] floats; + + if (value instanceof float[]) { + floats = (float[]) value; + } + else { + throw new IllegalArgumentException("Unsupported type for TIFF FLOAT: " + value.getClass()); + } + + stream.writeFloats(floats, 0, floats.length); + + break; + + case TIFF.TYPE_DOUBLE: + double[] doubles; + + if (value instanceof double[]) { + doubles = (double[]) value; + } + else { + throw new IllegalArgumentException("Unsupported type for TIFF FLOAT: " + value.getClass()); + } + + stream.writeDoubles(doubles, 0, doubles.length); + + break; default: throw new IllegalArgumentException("Unsupported TIFF type: " + type); @@ -319,27 +353,36 @@ public final class EXIFWriter extends MetadataWriter { // } else { switch (type) { - case TIFF.TYPE_UNDEFINED: case TIFF.TYPE_BYTE: - stream.writeByte((Integer) value); + case TIFF.TYPE_SBYTE: + case TIFF.TYPE_UNDEFINED: + stream.writeByte(((Number) value).intValue()); break; case TIFF.TYPE_ASCII: - byte[] bytes = ((String) value).getBytes(Charset.forName("UTF-8")); + byte[] bytes = ((String) value).getBytes(StandardCharsets.UTF_8); stream.write(bytes); stream.write(0); break; case TIFF.TYPE_SHORT: - stream.writeShort((Integer) value); + case TIFF.TYPE_SSHORT: + stream.writeShort(((Number) value).intValue()); break; case TIFF.TYPE_LONG: + case TIFF.TYPE_SLONG: stream.writeInt(((Number) value).intValue()); break; case TIFF.TYPE_RATIONAL: + case TIFF.TYPE_SRATIONAL: Rational rational = (Rational) value; stream.writeInt((int) rational.numerator()); stream.writeInt((int) rational.denominator()); break; - // TODO: More types + case TIFF.TYPE_FLOAT: + stream.writeFloat(((Number) value).floatValue()); + break; + case TIFF.TYPE_DOUBLE: + stream.writeDouble(((Number) value).doubleValue()); + break; default: throw new IllegalArgumentException("Unsupported TIFF type: " + type); @@ -356,11 +399,26 @@ public final class EXIFWriter extends MetadataWriter { } private short getType(final Entry entry) { + // TODO: What a MESS! Rewrite and expose EXIFEntry as TIFFEntry or so... + + // For internal entries use type directly if (entry instanceof EXIFEntry) { EXIFEntry exifEntry = (EXIFEntry) entry; return exifEntry.getType(); } + // For other entries, use name if it matches + String typeName = entry.getTypeName(); + + if (typeName != null) { + for (int i = 1; i < TIFF.TYPE_NAMES.length; i++) { + if (typeName.equals(TIFF.TYPE_NAMES[i])) { + return (short) i; + } + } + } + + // Otherwise, fall back to the native Java type Object value = Validate.notNull(entry.getValue()); boolean array = value.getClass().isArray(); diff --git a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/TIFF.java b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/TIFF.java index 606b0849..aeca1fd0 100644 --- a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/TIFF.java +++ b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/TIFF.java @@ -95,6 +95,7 @@ public interface TIFF { null, null, "LONG8", "SLONG8", "IFD8" }; + /** Length of the corresponding type, in bytes. */ int[] TYPE_LENGTHS = { -1, 1, 1, 2, 4, 8, @@ -165,6 +166,7 @@ public interface TIFF { int TAG_IMAGE_DESCRIPTION = 270; int TAG_MAKE = 271; int TAG_MODEL = 272; + int TAG_PAGE_NAME = 285; int TAG_PAGE_NUMBER = 297; int TAG_SOFTWARE = 305; int TAG_ARTIST = 315; From c913ef445b3b70b8fb13bf0ae067840edaeb4b83 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Wed, 12 Aug 2015 10:48:58 +0200 Subject: [PATCH 076/182] TMI-139: Support for writing TIFF files with custom resolution value. --- .../imageio/AbstractMetadata.java | 9 - .../util/ImageWriterAbstractTestCase.java | 10 +- .../plugins/tiff/TIFFImageMetadata.java | 501 ++++++++++++++- .../imageio/plugins/tiff/TIFFImageReader.java | 161 +++-- .../imageio/plugins/tiff/TIFFImageWriter.java | 192 +++++- .../plugins/tiff/TIFFImageMetadataTest.java | 599 ++++++++++++++++++ .../plugins/tiff/TIFFImageWriterTest.java | 231 ++++++- 7 files changed, 1600 insertions(+), 103 deletions(-) create mode 100644 imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageMetadataTest.java diff --git a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/AbstractMetadata.java b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/AbstractMetadata.java index 202a8357..d8ff9607 100644 --- a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/AbstractMetadata.java +++ b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/AbstractMetadata.java @@ -98,15 +98,6 @@ public abstract class AbstractMetadata extends IIOMetadata implements Cloneable if (!root.getNodeName().equals(formatName)) { throw new IIOInvalidTreeException("Root must be " + formatName, root); } - - // TODO: Merge both native and standard! - Node node = root.getFirstChild(); - while (node != null) { - // TODO: Merge values from node into this - - // Move to the next sibling - node = node.getNextSibling(); - } } @Override diff --git a/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/ImageWriterAbstractTestCase.java b/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/ImageWriterAbstractTestCase.java index 67ecd60f..15f9a31d 100755 --- a/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/ImageWriterAbstractTestCase.java +++ b/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/ImageWriterAbstractTestCase.java @@ -63,6 +63,7 @@ public abstract class ImageWriterAbstractTestCase { static { IIORegistry.getDefaultInstance().registerServiceProvider(new URLImageInputStreamSpi()); + ImageIO.setUseCache(false); } protected abstract ImageWriter createImageWriter(); @@ -120,23 +121,20 @@ public abstract class ImageWriterAbstractTestCase { for (RenderedImage testData : getTestData()) { ByteArrayOutputStream buffer = new ByteArrayOutputStream(); - ImageOutputStream stream = ImageIO.createImageOutputStream(buffer); - writer.setOutput(stream); - try { + try (ImageOutputStream stream = ImageIO.createImageOutputStream(buffer)) { + writer.setOutput(stream); writer.write(drawSomething((BufferedImage) testData)); } catch (IOException e) { fail(e.getMessage()); } - finally { - stream.close(); // Force data to be written - } assertTrue("No image data written", buffer.size() > 0); } } + @SuppressWarnings("ConstantConditions") @Test public void testWriteNull() throws IOException { ImageWriter writer = createImageWriter(); diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageMetadata.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageMetadata.java index 5b6e44c2..c0fe8f94 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageMetadata.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageMetadata.java @@ -1,18 +1,24 @@ package com.twelvemonkeys.imageio.plugins.tiff; import com.twelvemonkeys.imageio.AbstractMetadata; +import com.twelvemonkeys.imageio.metadata.AbstractDirectory; import com.twelvemonkeys.imageio.metadata.Directory; import com.twelvemonkeys.imageio.metadata.Entry; +import com.twelvemonkeys.imageio.metadata.exif.Rational; import com.twelvemonkeys.imageio.metadata.exif.TIFF; import com.twelvemonkeys.lang.Validate; +import org.w3c.dom.Element; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; +import javax.imageio.metadata.IIOInvalidTreeException; +import javax.imageio.metadata.IIOMetadataFormatImpl; import javax.imageio.metadata.IIOMetadataNode; import java.lang.reflect.Array; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; -import java.util.Arrays; -import java.util.Calendar; +import java.util.*; /** * TIFFImageMetadata. @@ -23,16 +29,19 @@ import java.util.Calendar; */ final class TIFFImageMetadata extends AbstractMetadata { - private final Directory ifd; + static final int RATIONAL_SCALE_FACTOR = 100000; + + private final Directory original; + private Directory ifd; TIFFImageMetadata(final Directory ifd) { super(true, TIFFMedataFormat.SUN_NATIVE_IMAGE_METADATA_FORMAT_NAME, TIFFMedataFormat.class.getName(), null, null); this.ifd = Validate.notNull(ifd, "IFD"); + this.original = ifd; } - @Override - public boolean isReadOnly() { - return false; + TIFFImageMetadata(final Collection entries) { + this(new TIFFIFD(entries)); } protected IIOMetadataNode getNativeTree() { @@ -99,7 +108,7 @@ final class TIFFImageMetadata extends AbstractMetadata { IIOMetadataNode elementNode = new IIOMetadataNode(typeName); valueNode.appendChild(elementNode); - setValue(value, unsigned, elementNode); + setTIFFNativeValue(value, unsigned, elementNode); } else { for (int i = 0; i < count; i++) { @@ -107,7 +116,7 @@ final class TIFFImageMetadata extends AbstractMetadata { IIOMetadataNode elementNode = new IIOMetadataNode(typeName); valueNode.appendChild(elementNode); - setValue(val, unsigned, elementNode); + setTIFFNativeValue(val, unsigned, elementNode); } } } @@ -119,7 +128,7 @@ final class TIFFImageMetadata extends AbstractMetadata { return ifdNode; } - private void setValue(final Object value, final boolean unsigned, final IIOMetadataNode elementNode) { + private void setTIFFNativeValue(final Object value, final boolean unsigned, final IIOMetadataNode elementNode) { if (unsigned && value instanceof Byte) { elementNode.setAttribute("value", String.valueOf((Byte) value & 0xFF)); } @@ -289,12 +298,12 @@ final class TIFFImageMetadata extends AbstractMetadata { // Handle ColorSpaceType (RGB/CMYK/YCbCr etc)... Entry photometricTag = ifd.getEntryById(TIFF.TAG_PHOTOMETRIC_INTERPRETATION); - int photometricValue = ((Number) photometricTag.getValue()).intValue(); // No default for this tag! + int photometricValue = getValueAsInt(photometricTag); // No default for this tag! Entry samplesPerPixelTag = ifd.getEntryById(TIFF.TAG_SAMPLES_PER_PIXEL); Entry bitsPerSampleTag = ifd.getEntryById(TIFF.TAG_BITS_PER_SAMPLE); int numChannelsValue = samplesPerPixelTag != null - ? ((Number) samplesPerPixelTag.getValue()).intValue() + ? getValueAsInt(samplesPerPixelTag) : bitsPerSampleTag.valueCount(); IIOMetadataNode colorSpaceType = new IIOMetadataNode("ColorSpaceType"); @@ -393,7 +402,7 @@ final class TIFFImageMetadata extends AbstractMetadata { Entry compressionTag = ifd.getEntryById(TIFF.TAG_COMPRESSION); int compressionValue = compressionTag == null ? TIFFBaseline.COMPRESSION_NONE - : ((Number) compressionTag.getValue()).intValue(); + : getValueAsInt(compressionTag); // Naming is identical to JAI ImageIO metadata as far as possible switch (compressionValue) { @@ -502,7 +511,7 @@ final class TIFFImageMetadata extends AbstractMetadata { Entry planarConfigurationTag = ifd.getEntryById(TIFF.TAG_PLANAR_CONFIGURATION); int planarConfigurationValue = planarConfigurationTag == null ? TIFFBaseline.PLANARCONFIG_CHUNKY - : ((Number) planarConfigurationTag.getValue()).intValue(); + : getValueAsInt(planarConfigurationTag); switch (planarConfigurationValue) { case TIFFBaseline.PLANARCONFIG_CHUNKY: @@ -519,14 +528,16 @@ final class TIFFImageMetadata extends AbstractMetadata { Entry photometricInterpretationTag = ifd.getEntryById(TIFF.TAG_PHOTOMETRIC_INTERPRETATION); int photometricInterpretationValue = photometricInterpretationTag == null ? TIFFBaseline.PHOTOMETRIC_WHITE_IS_ZERO - : ((Number) photometricInterpretationTag.getValue()).intValue(); + : getValueAsInt(photometricInterpretationTag); Entry samleFormatTag = ifd.getEntryById(TIFF.TAG_SAMPLE_FORMAT); + // TODO: Fix for sampleformat 1 1 1 (as int[]) ??!?!? int sampleFormatValue = samleFormatTag == null ? TIFFBaseline.SAMPLEFORMAT_UINT - : ((Number) samleFormatTag.getValue()).intValue(); + : getValueAsInt(samleFormatTag); IIOMetadataNode sampleFormat = new IIOMetadataNode("SampleFormat"); node.appendChild(sampleFormat); + switch (sampleFormatValue) { case TIFFBaseline.SAMPLEFORMAT_UINT: if (photometricInterpretationValue == TIFFBaseline.PHOTOMETRIC_PALETTE) { @@ -562,13 +573,13 @@ final class TIFFImageMetadata extends AbstractMetadata { Entry samplesPerPixelTag = ifd.getEntryById(TIFF.TAG_SAMPLES_PER_PIXEL); int numChannelsValue = samplesPerPixelTag != null - ? ((Number) samplesPerPixelTag.getValue()).intValue() + ? getValueAsInt(samplesPerPixelTag) : bitsPerSampleTag.valueCount(); // SampleMSB Entry fillOrderTag = ifd.getEntryById(TIFF.TAG_FILL_ORDER); int fillOrder = fillOrderTag != null - ? ((Number) fillOrderTag.getValue()).intValue() + ? getValueAsInt(fillOrderTag) : TIFFBaseline.FILL_LEFT_TO_RIGHT; IIOMetadataNode sampleMSB = new IIOMetadataNode("SampleMSB"); node.appendChild(sampleMSB); @@ -588,6 +599,22 @@ final class TIFFImageMetadata extends AbstractMetadata { return node; } + private static int getValueAsInt(final Entry entry) { + Object value = entry.getValue(); + + if (value instanceof Number) { + return ((Number) value).intValue(); + } + else if (value instanceof short[]) { + return ((short[]) value)[0]; + } + else if (value instanceof int[]) { + return ((int[]) value)[0]; + } + + throw new IllegalArgumentException("Unsupported type: " + entry); + } + // TODO: Candidate superclass method! private String createListValue(final int itemCount, final String... values) { StringBuilder buffer = new StringBuilder(); @@ -620,7 +647,7 @@ final class TIFFImageMetadata extends AbstractMetadata { // ImageOrientation Entry orientationTag = ifd.getEntryById(TIFF.TAG_ORIENTATION); if (orientationTag != null) { - int orientationValue = ((Number) orientationTag.getValue()).intValue(); + int orientationValue = getValueAsInt(orientationTag); String value = null; switch (orientationValue) { @@ -659,7 +686,7 @@ final class TIFFImageMetadata extends AbstractMetadata { } Entry resUnitTag = ifd.getEntryById(TIFF.TAG_RESOLUTION_UNIT); - int resUnitValue = resUnitTag == null ? TIFFBaseline.RESOLUTION_UNIT_DPI : ((Number) resUnitTag.getValue()).intValue(); + int resUnitValue = resUnitTag == null ? TIFFBaseline.RESOLUTION_UNIT_DPI : getValueAsInt(resUnitTag); if (resUnitValue == TIFFBaseline.RESOLUTION_UNIT_CENTIMETER || resUnitValue == TIFFBaseline.RESOLUTION_UNIT_DPI) { // 10 mm in 1 cm or 25.4 mm in 1 inch double scale = resUnitValue == TIFFBaseline.RESOLUTION_UNIT_CENTIMETER ? 10 : 25.4; @@ -703,7 +730,7 @@ final class TIFFImageMetadata extends AbstractMetadata { if (extraSamplesTag != null) { int extraSamplesValue = (extraSamplesTag.getValue() instanceof Number) - ? ((Number) extraSamplesTag.getValue()).intValue() + ? getValueAsInt(extraSamplesTag) : ((Number) Array.get(extraSamplesTag.getValue(), 0)).intValue(); // Other values exists, these are not alpha @@ -739,7 +766,7 @@ final class TIFFImageMetadata extends AbstractMetadata { if (subFileTypeTag != null) { // NOTE: The JAI metadata is somewhat broken here, as these are bit flags, not values... String value = null; - int subFileTypeValue = ((Number) subFileTypeTag.getValue()).intValue(); + int subFileTypeValue = getValueAsInt(subFileTypeTag); if ((subFileTypeValue & TIFFBaseline.FILETYPE_MASK) != 0) { value = "TransparencyMask"; } @@ -795,6 +822,7 @@ final class TIFFImageMetadata extends AbstractMetadata { addTextEntryIfPresent(text, TIFF.TAG_IMAGE_DESCRIPTION); addTextEntryIfPresent(text, TIFF.TAG_MAKE); addTextEntryIfPresent(text, TIFF.TAG_MODEL); + addTextEntryIfPresent(text, TIFF.TAG_PAGE_NAME); addTextEntryIfPresent(text, TIFF.TAG_SOFTWARE); addTextEntryIfPresent(text, TIFF.TAG_ARTIST); addTextEntryIfPresent(text, TIFF.TAG_HOST_COMPUTER); @@ -821,4 +849,435 @@ final class TIFFImageMetadata extends AbstractMetadata { // See http://stackoverflow.com/questions/30910719/javax-imageio-1-0-standard-plug-in-neutral-metadata-format-tiling-information return super.getStandardTileNode(); } + + /// Mutation + + @Override + public boolean isReadOnly() { + return false; + } + + public void setFromTree(final String formatName, final Node root) throws IIOInvalidTreeException { + // Standard validation + super.mergeTree(formatName, root); + + // Set by "merging" with empty map + LinkedHashMap entries = new LinkedHashMap<>(); + mergeEntries(formatName, root, entries); + + // TODO: Consistency validation? + + // Finally create a new IFD from merged values + ifd = new TIFFIFD(entries.values()); + } + + @Override + public void mergeTree(final String formatName, final Node root) throws IIOInvalidTreeException { + // Standard validation + super.mergeTree(formatName, root); + + // Clone entries (shallow clone, as entries themselves are immutable) + LinkedHashMap entries = new LinkedHashMap<>(ifd.size() + 10); + + for (Entry entry : ifd) { + entries.put((Integer) entry.getIdentifier(), entry); + } + + mergeEntries(formatName, root, entries); + + // TODO: Consistency validation? + + // Finally create a new IFD from merged values + ifd = new TIFFIFD(entries.values()); + } + + private void mergeEntries(final String formatName, final Node root, final Map entries) throws IIOInvalidTreeException { + // Merge from both native and standard trees + if (getNativeMetadataFormatName().equals(formatName)) { + mergeNativeTree(root, entries); + } + else if (IIOMetadataFormatImpl.standardMetadataFormatName.equals(formatName)) { + mergeStandardTree(root, entries); + } + else { + // Should already be checked for + throw new AssertionError(); + } + } + + private void mergeStandardTree(final Node root, final Map entries) throws IIOInvalidTreeException { + NodeList nodes = root.getChildNodes(); + + // Merge selected values from standard tree + for (int i = 0; i < nodes.getLength(); i++) { + Node node = nodes.item(i); + + if ("Dimension".equals(node.getNodeName())) { + mergeFromStandardDimensionNode(node, entries); + } + else if ("Document".equals(node.getNodeName())) { + mergeFromStandardDocumentNode(node, entries); + } + else if ("Text".equals(node.getNodeName())) { + mergeFromStandardTextNode(node, entries); + } + } + } + + private void mergeFromStandardDimensionNode(final Node dimensionNode, final Map entries) { + // Dimension: xRes/yRes + // - If set, set res unit to pixels per cm as this better reflects values? + // - Or, convert to DPI, if we already had values in DPI?? + // Also, if we have only aspect, set these values, and use unknown as unit? + // TODO: ImageOrientation => Orientation + NodeList children = dimensionNode.getChildNodes(); + + Float aspect = null; + Float xRes = null; + Float yRes = null; + + for (int i = 0; i < children.getLength(); i++) { + Node child = children.item(i); + String nodeName = child.getNodeName(); + + if ("PixelAspectRatio".equals(nodeName)) { + aspect = Float.parseFloat(getAttribute(child, "value")); + } + else if ("HorizontalPixelSize".equals(nodeName)) { + xRes = Float.parseFloat(getAttribute(child, "value")); + } + else if ("VerticalPixelSize".equals(nodeName)) { + yRes = Float.parseFloat(getAttribute(child, "value")); + } + } + + // If we have one size compute the other + if (xRes == null && yRes != null) { + xRes = yRes * (aspect != null ? aspect : 1f); + } + else if (yRes == null && xRes != null) { + yRes = xRes / (aspect != null ? aspect : 1f); + } + + // If we have resolution + if (xRes != null && yRes != null) { + // If old unit was DPI, convert values and keep DPI, otherwise use PPCM + Entry resUnitEntry = entries.get(TIFF.TAG_RESOLUTION_UNIT); + int resUnitValue = resUnitEntry != null && resUnitEntry.getValue() != null + && ((Number) resUnitEntry.getValue()).intValue() == TIFFBaseline.RESOLUTION_UNIT_DPI + ? TIFFBaseline.RESOLUTION_UNIT_DPI + : TIFFBaseline.RESOLUTION_UNIT_CENTIMETER; + + // Units from standard format are pixels per mm, convert to cm or inches + float scale = resUnitValue == TIFFBaseline.RESOLUTION_UNIT_CENTIMETER ? 10 : 25.4f; + + int x = Math.round(xRes * scale * RATIONAL_SCALE_FACTOR); + int y = Math.round(yRes * scale * RATIONAL_SCALE_FACTOR); + + entries.put(TIFF.TAG_X_RESOLUTION, new TIFFImageWriter.TIFFEntry(TIFF.TAG_X_RESOLUTION, new Rational(x, RATIONAL_SCALE_FACTOR))); + entries.put(TIFF.TAG_Y_RESOLUTION, new TIFFImageWriter.TIFFEntry(TIFF.TAG_Y_RESOLUTION, new Rational(y, RATIONAL_SCALE_FACTOR))); + entries.put(TIFF.TAG_RESOLUTION_UNIT, + new TIFFImageWriter.TIFFEntry(TIFF.TAG_RESOLUTION_UNIT, TIFF.TYPE_SHORT, resUnitValue)); + } + else if (aspect != null) { + if (aspect >= 1) { + int v = Math.round(aspect * RATIONAL_SCALE_FACTOR); + entries.put(TIFF.TAG_X_RESOLUTION, new TIFFImageWriter.TIFFEntry(TIFF.TAG_X_RESOLUTION, new Rational(v, RATIONAL_SCALE_FACTOR))); + entries.put(TIFF.TAG_Y_RESOLUTION, new TIFFImageWriter.TIFFEntry(TIFF.TAG_Y_RESOLUTION, new Rational(1))); + } + else { + int v = Math.round(RATIONAL_SCALE_FACTOR / aspect); + entries.put(TIFF.TAG_X_RESOLUTION, new TIFFImageWriter.TIFFEntry(TIFF.TAG_X_RESOLUTION, new Rational(1))); + entries.put(TIFF.TAG_Y_RESOLUTION, new TIFFImageWriter.TIFFEntry(TIFF.TAG_Y_RESOLUTION, new Rational(v, RATIONAL_SCALE_FACTOR))); + } + + entries.put(TIFF.TAG_RESOLUTION_UNIT, + new TIFFImageWriter.TIFFEntry(TIFF.TAG_RESOLUTION_UNIT, TIFF.TYPE_SHORT, TIFFBaseline.RESOLUTION_UNIT_NONE)); + } + // Else give up... + } + + private void mergeFromStandardDocumentNode(final Node documentNode, final Map entries) { + // Document: SubfileType, CreationDate + NodeList children = documentNode.getChildNodes(); + + for (int i = 0; i < children.getLength(); i++) { + Node child = children.item(i); + String nodeName = child.getNodeName(); + + if ("SubimageInterpretation".equals(nodeName)) { + // TODO: SubFileType + } + else if ("ImageCreationTime".equals(nodeName)) { + // TODO: CreationDate + } + } + } + + private void mergeFromStandardTextNode(final Node textNode, final Map entries) throws IIOInvalidTreeException { + NodeList textEntries = textNode.getChildNodes(); + + for (int i = 0; i < textEntries.getLength(); i++) { + Node textEntry = textEntries.item(i); + + if (!"TextEntry".equals(textEntry.getNodeName())) { + throw new IIOInvalidTreeException("Text node should only contain TextEntry nodes", textNode); + } + + String keyword = getAttribute(textEntry, "keyword"); + String value = getAttribute(textEntry, "value"); + + // DocumentName, ImageDescription, Make, Model, PageName, + // Software, Artist, HostComputer, InkNames, Copyright + if (value != null && !value.isEmpty() && keyword != null) { + // We do all comparisons in lower case, for compatibility + keyword = keyword.toLowerCase(); + + TIFFImageWriter.TIFFEntry entry; + + if ("documentname".equals(keyword)) { + entry = new TIFFImageWriter.TIFFEntry(TIFF.TAG_DOCUMENT_NAME, TIFF.TYPE_ASCII, value); + } + else if ("imagedescription".equals(keyword)) { + entry = new TIFFImageWriter.TIFFEntry(TIFF.TAG_IMAGE_DESCRIPTION, TIFF.TYPE_ASCII, value); + } + else if ("make".equals(keyword)) { + entry = new TIFFImageWriter.TIFFEntry(TIFF.TAG_MAKE, TIFF.TYPE_ASCII, value); + } + else if ("model".equals(keyword)) { + entry = new TIFFImageWriter.TIFFEntry(TIFF.TAG_MODEL, TIFF.TYPE_ASCII, value); + } + else if ("pagename".equals(keyword)) { + entry = new TIFFImageWriter.TIFFEntry(TIFF.TAG_PAGE_NAME, TIFF.TYPE_ASCII, value); + } + else if ("software".equals(keyword)) { + entry = new TIFFImageWriter.TIFFEntry(TIFF.TAG_SOFTWARE, TIFF.TYPE_ASCII, value); + } + else if ("artist".equals(keyword)) { + entry = new TIFFImageWriter.TIFFEntry(TIFF.TAG_ARTIST, TIFF.TYPE_ASCII, value); + } + else if ("hostcomputer".equals(keyword)) { + entry = new TIFFImageWriter.TIFFEntry(TIFF.TAG_HOST_COMPUTER, TIFF.TYPE_ASCII, value); + } + else if ("inknames".equals(keyword)) { + entry = new TIFFImageWriter.TIFFEntry(TIFF.TAG_INK_NAMES, TIFF.TYPE_ASCII, value); + } + else if ("copyright".equals(keyword)) { + entry = new TIFFImageWriter.TIFFEntry(TIFF.TAG_COPYRIGHT, TIFF.TYPE_ASCII, value); + } + else { + continue; + } + + entries.put((Integer) entry.getIdentifier(), entry); + } + } + } + + private void mergeNativeTree(final Node root, final Map entries) throws IIOInvalidTreeException { + Directory ifd = toIFD(root.getFirstChild()); + + // Merge (overwrite) entries with entries from IFD + for (Entry entry : ifd) { + entries.put((Integer) entry.getIdentifier(), entry); + } + } + + private Directory toIFD(final Node ifdNode) throws IIOInvalidTreeException { + if (ifdNode == null || !ifdNode.getNodeName().equals("TIFFIFD")) { + throw new IIOInvalidTreeException("Expected \"TIFFIFD\" node", ifdNode); + } + + List entries = new ArrayList<>(); + NodeList nodes = ifdNode.getChildNodes(); + + for (int i = 0; i < nodes.getLength(); i++) { + entries.add(toEntry(nodes.item(i))); + } + + return new TIFFIFD(entries); + } + + private Entry toEntry(final Node node) throws IIOInvalidTreeException { + String name = node.getNodeName(); + + if (name.equals("TIFFIFD")) { + int tag = Integer.parseInt(getAttribute(node, "parentTagNumber")); + Directory subIFD = toIFD(node); + + return new TIFFImageWriter.TIFFEntry(tag, TIFF.TYPE_IFD, subIFD); + } + else if (name.equals("TIFFField")) { + int tag = Integer.parseInt(getAttribute(node, "number")); + short type = getTIFFType(node); + Object value = getValue(node, type); + + return value != null ? new TIFFImageWriter.TIFFEntry(tag, type, value) : null; + } + else { + throw new IIOInvalidTreeException("Expected \"TIFFIFD\" or \"TIFFField\" node: " + name, node); + } + } + + private short getTIFFType(final Node node) throws IIOInvalidTreeException { + Node containerNode = node.getFirstChild(); + if (containerNode == null) { + throw new IIOInvalidTreeException("Missing value wrapper node", node); + } + + String nodeName = containerNode.getNodeName(); + if (!nodeName.startsWith("TIFF")) { + throw new IIOInvalidTreeException("Unexpected value wrapper node, expected type", containerNode); + } + + String typeName = nodeName.substring(4); + + if (typeName.equals("Undefined")) { + return TIFF.TYPE_UNDEFINED; + } + + typeName = typeName.substring(0, typeName.length() - 1).toUpperCase(); + + for (int i = 1; i < TIFF.TYPE_NAMES.length; i++) { + if (typeName.equals(TIFF.TYPE_NAMES[i])) { + return (short) i; + } + } + + throw new IIOInvalidTreeException("Unknown TIFF type: " + typeName, containerNode); + } + + private Object getValue(final Node node, final short type) throws IIOInvalidTreeException { + Node child = node.getFirstChild(); + + if (child != null) { + String typeName = child.getNodeName(); + + if (type == TIFF.TYPE_UNDEFINED) { + String values = getAttribute(child, "value"); + String[] vals = values.split(",\\s?"); + + byte[] bytes = new byte[vals.length]; + for (int i = 0; i < vals.length; i++) { + bytes[i] = Byte.parseByte(vals[i]); + } + + return bytes; + } + else { + NodeList valueNodes = child.getChildNodes(); + + // Create array for each type + int count = valueNodes.getLength(); + Object value = createArrayForType(type, count); + + // Parse each value + for (int i = 0; i < count; i++) { + Node valueNode = valueNodes.item(i); + + if (!typeName.startsWith(valueNode.getNodeName())) { + throw new IIOInvalidTreeException("Value node does not match container node", child); + } + + String stringValue = getAttribute(valueNode, "value"); + + // NOTE: The reason for parsing "wider" type, is to allow for unsigned values + switch (type) { + case TIFF.TYPE_BYTE: + case TIFF.TYPE_SBYTE: + ((byte[]) value)[i] = (byte) Short.parseShort(stringValue); + break; + case TIFF.TYPE_ASCII: + ((String[]) value)[i] = stringValue; + break; + case TIFF.TYPE_SHORT: + case TIFF.TYPE_SSHORT: + ((short[]) value)[i] = (short) Integer.parseInt(stringValue); + break; + case TIFF.TYPE_LONG: + case TIFF.TYPE_SLONG: + ((int[]) value)[i] = (int) Long.parseLong(stringValue); + break; + case TIFF.TYPE_RATIONAL: + case TIFF.TYPE_SRATIONAL: + String[] numDenom = stringValue.split("/"); + ((Rational[]) value)[i] = numDenom.length > 1 + ? new Rational(Long.parseLong(numDenom[0]), Long.parseLong(numDenom[1])) + : new Rational(Long.parseLong(numDenom[0])); + break; + case TIFF.TYPE_FLOAT: + ((float[]) value)[i] = Float.parseFloat(stringValue); + break; + case TIFF.TYPE_DOUBLE: + ((double[]) value)[i] = Double.parseDouble(stringValue); + break; + default: + throw new AssertionError("Unsupported TIFF type: " + type); + } + } + + // Normalize value + if (count == 0) { + return null; + } + if (count == 1) { + return Array.get(value, 0); + } + + return value; + } + } + + throw new IIOInvalidTreeException("Empty TIFField node", node); + } + + private Object createArrayForType(final short type, final int length) { + switch (type) { + case TIFF.TYPE_ASCII: + return new String[length]; + case TIFF.TYPE_BYTE: + case TIFF.TYPE_SBYTE: + case TIFF.TYPE_UNDEFINED: // Not used here, but for completeness + return new byte[length]; + case TIFF.TYPE_SHORT: + case TIFF.TYPE_SSHORT: + return new short[length]; + case TIFF.TYPE_LONG: + case TIFF.TYPE_SLONG: + return new int[length]; + case TIFF.TYPE_IFD: + return new long[length]; + case TIFF.TYPE_RATIONAL: + case TIFF.TYPE_SRATIONAL: + return new Rational[length]; + case TIFF.TYPE_FLOAT: + return new float[length]; + case TIFF.TYPE_DOUBLE: + return new double[length]; + default: + throw new AssertionError("Unsupported TIFF type: " + type); + } + } + + private String getAttribute(final Node node, final String attribute) { + return node instanceof Element ? ((Element) node).getAttribute(attribute) : null; + } + + @Override + public void reset() { + super.reset(); + + ifd = original; + } + + Directory getIFD() { + return ifd; + } + + // TODO: Replace with IFD class when moved to new package and made public! + private final static class TIFFIFD extends AbstractDirectory { + public TIFFIFD(final Collection entries) { + super(entries); + } + } } 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 b5052f3e..576f9413 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 @@ -36,7 +36,10 @@ import com.twelvemonkeys.imageio.metadata.Entry; import com.twelvemonkeys.imageio.metadata.exif.EXIFReader; import com.twelvemonkeys.imageio.metadata.exif.Rational; import com.twelvemonkeys.imageio.metadata.exif.TIFF; +import com.twelvemonkeys.imageio.metadata.iptc.IPTCReader; import com.twelvemonkeys.imageio.metadata.jpeg.JPEG; +import com.twelvemonkeys.imageio.metadata.psd.PSDReader; +import com.twelvemonkeys.imageio.metadata.xmp.XMPReader; import com.twelvemonkeys.imageio.stream.ByteArrayImageInputStream; import com.twelvemonkeys.imageio.stream.SubImageInputStream; import com.twelvemonkeys.imageio.util.IIOUtil; @@ -64,7 +67,9 @@ import java.awt.image.*; import java.io.*; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; +import java.nio.ByteBuffer; import java.nio.ByteOrder; +import java.nio.charset.StandardCharsets; import java.util.*; import java.util.zip.Inflater; import java.util.zip.InflaterInputStream; @@ -82,15 +87,16 @@ import java.util.zip.InflaterInputStream; * In addition, it supports many common TIFF extensions such as: *

    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�YV5eWQu*D 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�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%0DZd{|sZk3ic;QdW_mL|9r`S>Yc@!{^L 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σ*@O*vp0dp7a99I^ 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

    +o3Fk$eKN!TG;*Ek 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�|DXcrDmUYyf*jRHJ`jEjX`NBK%jk=HQ%8 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%0Dp(!zX{92%^ouqcqE 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 literal 0 HcmV?d00001 diff --git a/imageio/imageio-tiff/src/test/resources/tiff/cmyk_jpeg_no_profile.tif b/imageio/imageio-tiff/src/test/resources/tiff/cmyk_jpeg_no_profile.tif new file mode 100644 index 0000000000000000000000000000000000000000..fa6d491e44900156a672eac98773e7cd8d7353a2 GIT binary patch literal 5263 zcmeHLcTiJJyI%;9AWceWQUwJ;dO{P4$O}>wRFGa&q(+(`pddjJQ3Rz3hyoFj7o^^(;*`0l!^ZeG>SPlg7 z000d`V?ZAuSXkgJ%m_Ff&dQ3|$Ii#W&c?;9Be>|H1j1 zZEVi47tijZs`w$(`O;RSPah&!rqkUq(@xf;&I7m9 zTJ7ed(!(8#inILLk5p#ly;VM!)KL#Bx>lWBYgH#zQxO%^f*gCPXxtbr!Fj9T#j*_L z35EkVY&8S{!y@-DFWaum$u<_m!^^Q^X|HjeN^QH=1loY}nmlf7lGc}(mye!8u0!C* z3clX40*2y1cJ;5%pV-=bDfIw#(1-?5J zAF@O<5r2UDA%7hL*>;s=EX}Z6pGJHIfxdgyT#UF5{pBHQls9hO>$CSHCA*MsvIYT4=njI+b-1O|; z<3GPEsaIs-u8uy9DI$(eOk!vEk3G3E#i+7Gwx@C84IehEoGSJpj(#2zynSiUqG7H^ zdwNSo1|}s&8{AIgUXukQWBz$v zq&b}zU(qK8S#}ye;v&|&gTs}V!yo5u6Regi?v^4@i``-@H7O*=leQd#UNNUVVi6pv zg7YP_7hX@t&F|^#zZ+ijFf-(%Y#Y;VP_bFhwDSWc?^-RthgVA$yE?Brj%|gUukVP` zWY4#8(c$!WAQKz$+z!O(6QL-_n*y05Ba>H6^2E39Ds?7H#Jat(x3#@|k>!x4*rXkz z>EcRcq!o&I_u1DXchP3;l!v?ywFNFrTds%dY<6qqE0Q%eWkjy|A<&02mY+Keu6JVd zeAfdrR|PUZG}^yU)$n)`-ryzh(e8__L4G(9M{R0+YGA9uzJ*z zqYr%f5|P)9XcWTglwn*89?9 z_nYa7SbBO(-%+jXEZKM5f3PpIBKRsPe>=B9I6BI^(D%^$fwBV!#z_ad)p6Q9AN)FN zUovq2TL13z^ZuE>r#>R-IZsn)8sIK+zL;Ouu4wa=Dp ze^u;OHA**=U#{;x1U6kEkd{ju$846})MzB^Jj9KOQ!`_RdvS9!G#C}zu0uDaLtM?o zO=LCQN{bwV${--+mIVRle%wNnBm6dIHftM8Yb+=3qOs~rG>kh0isLAY_&l`Ij_WoA zOg11eilw>w?$Le3D4GLlSj$+4r>5g(Grhz&kx39RFfib=?m{j&9fLr;2xeoIxXX6V z*^JhQUp2oC{o|In)$coBGta|SMx?SF!|&441Zcq`IA3aYw2n_B!9||)PE%C z9_2E??Sq*WZsfoJmV#H;cNbUG4tO?Nx!r@R_Nj5_ydPiuqRuhRKAn1-U7pqQz>S@= zV(P12z7?YV31Tp=Cq8@8g6))Va)fA_Qiev8y0-4?S58jU2$bI$_rjjbVejrBKPw78 zipU(E(K>`8#9~~R=kBHEd2Chi4A(16XZF}vzGViDKaI98!vl;two>=Cws#3=%1b)W znJHvU%pb=J50TKH(sjAGM=S8tV-FuZbHgA0aYiD@B6%m|LsC-u*SF;G!#%G4QzPW{ zUcz*9$Vc~{(F@ChwK&#MofMOp!)2zqVyi zN|5^3LC*<)SC8RD2xy+w7m3}kDOW3|S56dAlw9f3-uN>C`TnkU$bi&9c1Ege<-Aur zkgT|d5b-E>r_FibmXsgg%BxHh1;FPOq(Y>rIDRU#A7i}}Qjm(r! zr2d?N=Q>V&dNA`?$bP%($C*0(Ew}Q92Kyo>EV-q8RcEqlEA;wIe_DXwJ948cxo0B2 zV(nG2c9qAun(Z&GElW8@bVO9soNM26$=99`M2w}oCOj{2#Y=mFlz9Bjw(jKkx$riPXxTq%NM z-q%;kt$S|^`LS2+qjs#-D-0*PgA$5~jI=Ax0t(WF`RT734&+7?fXt!n5Ja%wP zz9;xt-v-$|82IFG(bB(nRP-zA3nH>A6`>|$gwf;FLH_c-w2E$>+uQ+cw^MXDjl|=E z@$fP>1vL^n<8#&xUr(PmUF;P+_j`GTV2LLdE$o!-D@X1F4e5c8uyU1B-k7B&ihCBZ zDXna_wp>@9Un%S8<%?HTgjBxH9D6snMjV_$j}zih`cq@#`=583ZyRs0g?bBamI&W44cSQ~Nf*-1lzZ!~m)KS|-R`GM{4-tgv|ig>~} z8|DYqYSpH@>VZqFNr5DL)zls3fZNo5YXgdYP6r7iY&<>5<6-B1-$(Hx*8BXXQJ2zH zsaRF%yQ=ekT7p{j>+SJIc+d1#C52JeE+v8@>}w|KZwz!qzunw*zYJ%pdw(cQSfrbR=}u&L_nexKIfu=<8KW`a9~oW}DK z>@Q7O6UW~cfT>nR$MD>_N)(f=T;z$D&+i7E8UsT-Lnr_bPQtaL73 z(+K|luIH_X<1;Ol_!b-WQ(5(5>)a7sr`NVE3AbFQ%!L+oIs1!C6MS<{9VZVyD{8Me z_3UiWV>K7=>xNTPbM|}-*X42Wkg-$Ck1}p#zY=D_%R89of1##1eZ9(mC7!OoavOZk z-R`{A=vVo`E0U~1ihit8kNm$Gnfa5QY*(yEql;~+7WP=;m`R^O^}>xSEC>e2zWi*L zLD|K~cJ!P$&rgNoItj0&(M7oRgIE`GuKN-qPHzrrIV0E(M8eTlTP(8)GHLOuhT1cu ziIw@Y-{1dxJBfcbb>jNplXp4nv8qBP?}kVvZoF>Q8VLa<@n!KvC%qZsj%@fLIx8<4qQ!a5lo56gpt*Kw z^ibGPctMBtSHRumyosbo+I3^mYq-hrz3pHO{||EK!@Q>srtAOZ|9zyJV9 zp=XBQ7(>U5bj(CAb$9`Q{jP`8-&uZRW;)*Y8~^Ih!N3Su>E%5>0Js^L{_1N<@5}Qy z8RT#L>%08FF7@LT>5y1dBW-pFaQ*Yn)|!DhT_t9QzplSDpg$NGVNA>{a0Kf{B&Vc4O?&n-`&G`Lxp}Yi-@Yp?E3c@ms%~s*ZfR|6@A%L^F!<^7(D2CU kG-+mb?(6)*x9=;fYwH`ETiZLk& Date: Thu, 11 Jun 2015 11:32:46 +0200 Subject: [PATCH 052/182] Updated POM to 3.2-SNAPSHOT --- imageio/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/imageio/pom.xml b/imageio/pom.xml index 5c58847c..019c00ac 100644 --- a/imageio/pom.xml +++ b/imageio/pom.xml @@ -3,7 +3,7 @@ com.twelvemonkeys twelvemonkeys - 3.1.1-SNAPSHOT + 3.2-SNAPSHOT 4.0.0 com.twelvemonkeys.imageio From 51ca99d4336fd01597162300d2c34093093104e4 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Thu, 11 Jun 2015 12:47:36 +0200 Subject: [PATCH 053/182] Updating readme to latest release. --- README.md | 60 +++++++++++++++++++++++++++---------------------------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/README.md b/README.md index 7c0a0021..c8bb14d5 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ ## Latest -TwelveMonkeys ImageIO 3.1.0 is released (Apr. 10th, 2015). +TwelveMonkeys ImageIO 3.1.1 is released (Jun. 11th, 2015). ## About @@ -462,12 +462,12 @@ To depend on the JPEG and TIFF plugin using Maven, add the following to your POM com.twelvemonkeys.imageio imageio-jpeg - 3.1.0 + 3.1.1 com.twelvemonkeys.imageio imageio-tiff - 3.1.0 + 3.1.1 @@ -475,13 +475,13 @@ To depend on the JPEG and TIFF plugin using Maven, add the following to your POM To depend on the JPEG and TIFF plugin in your IDE or program, add all of the following JARs to your class path: - twelvemonkeys-common-lang-3.1.0.jar - twelvemonkeys-common-io-3.1.0.jar - twelvemonkeys-common-image-3.1.0.jar - twelvemonkeys-imageio-core-3.1.0.jar - twelvemonkeys-imageio-metadata-3.1.0.jar - twelvemonkeys-imageio-jpeg-3.1.0.jar - twelvemonkeys-imageio-tiff-3.1.0.jar + twelvemonkeys-common-lang-3.1.1.jar + twelvemonkeys-common-io-3.1.1.jar + twelvemonkeys-common-image-3.1.1.jar + twelvemonkeys-imageio-core-3.1.1.jar + twelvemonkeys-imageio-metadata-3.1.1.jar + twelvemonkeys-imageio-jpeg-3.1.1.jar + twelvemonkeys-imageio-tiff-3.1.1.jar ### Links to prebuilt binaries @@ -490,36 +490,36 @@ To depend on the JPEG and TIFF plugin in your IDE or program, add all of the fol Requires Java 7 or later. Common dependencies -* [common-lang-3.1.0.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/common/common-lang/3.1.0/common-lang-3.1.0.jar) -* [common-io-3.1.0.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/common/common-io/3.1.0/common-io-3.1.0.jar) -* [common-image-3.1.0.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/common/common-image/3.1.0/common-image-3.1.0.jar) +* [common-lang-3.1.1.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/common/common-lang/3.1.1/common-lang-3.1.1.jar) +* [common-io-3.1.1.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/common/common-io/3.1.1/common-io-3.1.1.jar) +* [common-image-3.1.1.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/common/common-image/3.1.1/common-image-3.1.1.jar) ImageIO dependencies -* [imageio-core-3.1.0.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-core/3.1.0/imageio-core-3.1.0.jar) -* [imageio-metadata-3.1.0.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-metadata/3.1.0/imageio-metadata-3.1.0.jar) +* [imageio-core-3.1.1.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-core/3.1.1/imageio-core-3.1.1.jar) +* [imageio-metadata-3.1.1.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-metadata/3.1.1/imageio-metadata-3.1.1.jar) ImageIO plugins -* [imageio-bmp-3.1.0.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-bmp/3.1.0/imageio-bmp-3.1.0.jar) -* [imageio-jpeg-3.1.0.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-jpeg/3.1.0/imageio-jpeg-3.1.0.jar) -* [imageio-tiff-3.1.0.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-tiff/3.1.0/imageio-tiff-3.1.0.jar) -* [imageio-pnm-3.1.0.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-pnm/3.1.0/imageio-pnm-3.1.0.jar) -* [imageio-psd-3.1.0.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-psd/3.1.0/imageio-psd-3.1.0.jar) -* [imageio-iff-3.1.0.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-iff/3.1.0/imageio-iff-3.1.0.jar) -* [imageio-pcx-3.1.0.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-pcx/3.1.0/imageio-pcx-3.1.0.jar) -* [imageio-pict-3.1.0.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-pict/3.1.0/imageio-pict-3.1.0.jar) -* [imageio-sgi-3.1.0.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-sgi/3.1.0/imageio-sgi-3.1.0.jar) -* [imageio-tga-3.1.0.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-tga/3.1.0/imageio-tga-3.1.0.jar) -* [imageio-icns-3.1.0.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-icns/3.1.0/imageio-icns-3.1.0.jar) -* [imageio-thumbsdb-3.1.0.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-thumbsdb/3.1.0/imageio-thumbsdb-3.1.0.jar) +* [imageio-bmp-3.1.1.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-bmp/3.1.1/imageio-bmp-3.1.1.jar) +* [imageio-jpeg-3.1.1.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-jpeg/3.1.1/imageio-jpeg-3.1.1.jar) +* [imageio-tiff-3.1.1.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-tiff/3.1.1/imageio-tiff-3.1.1.jar) +* [imageio-pnm-3.1.1.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-pnm/3.1.1/imageio-pnm-3.1.1.jar) +* [imageio-psd-3.1.1.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-psd/3.1.1/imageio-psd-3.1.1.jar) +* [imageio-iff-3.1.1.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-iff/3.1.1/imageio-iff-3.1.1.jar) +* [imageio-pcx-3.1.1.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-pcx/3.1.1/imageio-pcx-3.1.1.jar) +* [imageio-pict-3.1.1.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-pict/3.1.1/imageio-pict-3.1.1.jar) +* [imageio-sgi-3.1.1.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-sgi/3.1.1/imageio-sgi-3.1.1.jar) +* [imageio-tga-3.1.1.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-tga/3.1.1/imageio-tga-3.1.1.jar) +* [imageio-icns-3.1.1.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-icns/3.1.1/imageio-icns-3.1.1.jar) +* [imageio-thumbsdb-3.1.1.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-thumbsdb/3.1.1/imageio-thumbsdb-3.1.1.jar) ImageIO plugins requiring 3rd party libs -* [imageio-batik-3.1.0.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-batik/3.1.0/imageio-batik-3.1.0.jar) +* [imageio-batik-3.1.1.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-batik/3.1.1/imageio-batik-3.1.1.jar) Photoshop Path support for ImageIO -* [imageio-clippath-3.1.0.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-clippath/3.1.0/imageio-clippath-3.1.0.jar) +* [imageio-clippath-3.1.1.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-clippath/3.1.1/imageio-clippath-3.1.1.jar) Servlet support -* [servlet-3.1.0.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/servlet/servlet/3.1.0/servlet-3.1.0.jar) +* [servlet-3.1.1.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/servlet/servlet/3.1.1/servlet-3.1.1.jar) ##### Old version (3.0.x) From 7e65164b87a45cf740f9011911717af9202ba256 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Wed, 17 Jun 2015 13:24:45 +0200 Subject: [PATCH 054/182] TMI-146: Now correctly sets ExtraSamples only when there are more components in the raster than color components in the color space. --- .../imageio/plugins/tiff/TIFFImageWriter.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageWriter.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageWriter.java index 119404b2..b771f005 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageWriter.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageWriter.java @@ -145,9 +145,9 @@ public final class TIFFImageWriter extends ImageWriterBase { entries.add(new TIFFEntry(TIFF.TAG_IMAGE_HEIGHT, renderedImage.getHeight())); // entries.add(new TIFFEntry(TIFF.TAG_ORIENTATION, 1)); // (optional) entries.add(new TIFFEntry(TIFF.TAG_BITS_PER_SAMPLE, asShortArray(sampleModel.getSampleSize()))); - // If numComponents > 3, write ExtraSamples - if (numComponents > 3) { - // TODO: Write per component > 3 + // If numComponents > numColorComponents, write ExtraSamples + if (numComponents > colorModel.getNumColorComponents()) { + // TODO: Write per component > numColorComponents if (colorModel.hasAlpha()) { entries.add(new TIFFEntry(TIFF.TAG_EXTRA_SAMPLES, colorModel.isAlphaPremultiplied() ? TIFFBaseline.EXTRASAMPLE_ASSOCIATED_ALPHA : TIFFBaseline.EXTRASAMPLE_UNASSOCIATED_ALPHA)); } @@ -169,6 +169,7 @@ public final class TIFFImageWriter extends ImageWriterBase { default: } + // TODO: We might want to support CMYK in JPEG as well... int photometric = compression == TIFFExtension.COMPRESSION_JPEG ? TIFFExtension.PHOTOMETRIC_YCBCR : getPhotometricInterpretation(colorModel); @@ -684,7 +685,7 @@ public final class TIFFImageWriter extends ImageWriterBase { // BufferedImage image = new BufferedImage(original.getWidth(), original.getHeight(), BufferedImage.TYPE_INT_BGR); // BufferedImage image = new BufferedImage(original.getWidth(), original.getHeight(), BufferedImage.TYPE_3BYTE_BGR); BufferedImage image; - if (type < 0 || type == original.getType()) { + if (type <= 0 || type == original.getType()) { image = original; } else if (type == BufferedImage.TYPE_BYTE_INDEXED) { From f4cc310096a8498beee95eddbb9d169eb36f1c9b Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Mon, 22 Jun 2015 11:11:37 +0200 Subject: [PATCH 055/182] TMI-139: Work in progress: TIFF image metadata. --- .../imageio/plugins/bmp/BMPMetadata.java | 77 +- .../imageio}/AbstractMetadata.java | 57 +- .../twelvemonkeys/imageio/metadata/Entry.java | 4 + .../imageio/metadata/exif/EXIFEntry.java | 32 +- .../imageio/metadata/exif/EXIFReader.java | 4 +- .../imageio/metadata/exif/EXIFWriter.java | 20 +- .../imageio/metadata/exif/TIFF.java | 6 + .../imageio/metadata/xmp/XMPReader.java | 1 + .../imageio/plugins/pcx/PCXMetadata.java | 50 +- .../imageio/plugins/pnm/PNMMetadata.java | 61 +- .../imageio/plugins/psd/PSDMetadata.java | 12 +- .../imageio/plugins/sgi/SGIMetadata.java | 60 +- .../imageio/plugins/tga/TGAMetadata.java | 55 +- .../imageio/plugins/tiff/TIFFBaseline.java | 9 + .../imageio/plugins/tiff/TIFFExtension.java | 9 + .../plugins/tiff/TIFFImageMetadata.java | 824 ++++++++++++++++++ .../imageio/plugins/tiff/TIFFImageReader.java | 21 +- .../plugins/tiff/TIFFProviderInfo.java | 4 +- 18 files changed, 1041 insertions(+), 265 deletions(-) rename imageio/{imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd => imageio-core/src/main/java/com/twelvemonkeys/imageio}/AbstractMetadata.java (66%) create mode 100644 imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageMetadata.java diff --git a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/BMPMetadata.java b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/BMPMetadata.java index 9abbff29..1988d376 100755 --- a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/BMPMetadata.java +++ b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/BMPMetadata.java @@ -28,17 +28,16 @@ package com.twelvemonkeys.imageio.plugins.bmp; +import com.twelvemonkeys.imageio.AbstractMetadata; import com.twelvemonkeys.lang.Validate; import org.w3c.dom.Node; -import javax.imageio.metadata.IIOMetadata; -import javax.imageio.metadata.IIOMetadataFormatImpl; import javax.imageio.metadata.IIOMetadataNode; /** * BMPMetadata. */ -final class BMPMetadata extends IIOMetadata { +final class BMPMetadata extends AbstractMetadata { /** We return metadata in the exact same form as the JRE built-in, to be compatible with the BMPImageWriter. */ public static final String nativeMetadataFormatName = "javax_imageio_bmp_1.0"; @@ -46,46 +45,13 @@ final class BMPMetadata extends IIOMetadata { private final int[] colorMap; BMPMetadata(final DIBHeader header, final int[] colorMap) { + super(true, nativeMetadataFormatName, "com.sun.imageio.plugins.bmp.BMPMetadataFormat", null, null); this.header = Validate.notNull(header, "header"); this.colorMap = colorMap == null || colorMap.length == 0 ? null : colorMap; - - standardFormatSupported = true; - } - - @Override public boolean isReadOnly() { - return true; - } - - @Override public Node getAsTree(final String formatName) { - if (IIOMetadataFormatImpl.standardMetadataFormatName.equals(formatName)) { - return getStandardTree(); - } - else if (nativeMetadataFormatName.equals(formatName)) { - return getNativeTree(); - } - else { - throw new IllegalArgumentException("Unsupported metadata format: " + formatName); - } - } - - @Override public void mergeTree(final String formatName, final Node root) { - if (isReadOnly()) { - throw new IllegalStateException("Metadata is read-only"); - } - } - - @Override public void reset() { - if (isReadOnly()) { - throw new IllegalStateException("Metadata is read-only"); - } } @Override - public String getNativeMetadataFormatName() { - return nativeMetadataFormatName; - } - - private Node getNativeTree() { + protected Node getNativeTree() { IIOMetadataNode root = new IIOMetadataNode(nativeMetadataFormatName); addChildNode(root, "BMPVersion", header.getBMPVersion()); @@ -170,7 +136,8 @@ final class BMPMetadata extends IIOMetadata { return child; } - @Override protected IIOMetadataNode getStandardChromaNode() { + @Override + protected IIOMetadataNode getStandardChromaNode() { // NOTE: BMP files may contain a color map, even if true color... // Not sure if this is a good idea to expose to the meta data, // as it might be unexpected... Then again... @@ -197,7 +164,8 @@ final class BMPMetadata extends IIOMetadata { return null; } - @Override protected IIOMetadataNode getStandardCompressionNode() { + @Override + protected IIOMetadataNode getStandardCompressionNode() { IIOMetadataNode compression = new IIOMetadataNode("Compression"); IIOMetadataNode compressionTypeName = addChildNode(compression, "CompressionTypeName", null); compressionTypeName.setAttribute("value", "NONE"); @@ -229,7 +197,8 @@ final class BMPMetadata extends IIOMetadata { // } } - @Override protected IIOMetadataNode getStandardDataNode() { + @Override + protected IIOMetadataNode getStandardDataNode() { IIOMetadataNode node = new IIOMetadataNode("Data"); // IIOMetadataNode planarConfiguration = new IIOMetadataNode("PlanarConfiguration"); @@ -294,7 +263,8 @@ final class BMPMetadata extends IIOMetadata { return buffer.toString(); } - @Override protected IIOMetadataNode getStandardDimensionNode() { + @Override + protected IIOMetadataNode getStandardDimensionNode() { if (header.xPixelsPerMeter > 0 || header.yPixelsPerMeter > 0) { IIOMetadataNode dimension = new IIOMetadataNode("Dimension"); @@ -302,16 +272,16 @@ final class BMPMetadata extends IIOMetadata { addChildNode(dimension, "HorizontalPhysicalPixelSpacing", null); addChildNode(dimension, "VerticalPhysicalPixelSpacing", null); - // IIOMetadataNode imageOrientation = new IIOMetadataNode("ImageOrientation"); - // - // if (header.topDown) { - // imageOrientation.setAttribute("value", "FlipH"); - // } - // else { - // imageOrientation.setAttribute("value", "Normal"); - // } - // - // dimension.appendChild(imageOrientation); +// IIOMetadataNode imageOrientation = new IIOMetadataNode("ImageOrientation"); +// +// if (header.topDown) { +// imageOrientation.setAttribute("value", "FlipH"); +// } +// else { +// imageOrientation.setAttribute("value", "Normal"); +// } +// +// dimension.appendChild(imageOrientation); return dimension; } @@ -325,7 +295,8 @@ final class BMPMetadata extends IIOMetadata { // No tiling - @Override protected IIOMetadataNode getStandardTransparencyNode() { + @Override + protected IIOMetadataNode getStandardTransparencyNode() { return null; // IIOMetadataNode transparency = new IIOMetadataNode("Transparency"); diff --git a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/AbstractMetadata.java b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/AbstractMetadata.java similarity index 66% rename from imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/AbstractMetadata.java rename to imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/AbstractMetadata.java index 091246c7..202a8357 100644 --- a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/AbstractMetadata.java +++ b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/AbstractMetadata.java @@ -26,7 +26,7 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -package com.twelvemonkeys.imageio.plugins.psd; +package com.twelvemonkeys.imageio; import org.w3c.dom.Node; @@ -42,13 +42,15 @@ import java.util.Arrays; * @author last modified by $Author: haraldk$ * @version $Id: AbstractMetadata.java,v 1.0 Nov 13, 2009 1:02:12 AM haraldk Exp$ */ -abstract class AbstractMetadata extends IIOMetadata implements Cloneable { - // TODO: Move to core... +public abstract class AbstractMetadata extends IIOMetadata implements Cloneable { + protected AbstractMetadata(final boolean standardFormatSupported, + final String nativeFormatName, final String nativeFormatClassName, + final String[] extraFormatNames, final String[] extraFormatClassNames) { + super(standardFormatSupported, nativeFormatName, nativeFormatClassName, extraFormatNames, extraFormatClassNames); + } - protected AbstractMetadata(final boolean pStandardFormatSupported, - final String pNativeFormatName, final String pNativeFormatClassName, - final String[] pExtraFormatNames, final String[] pExtraFormatClassNames) { - super(pStandardFormatSupported, pNativeFormatName, pNativeFormatClassName, pExtraFormatNames, pExtraFormatClassNames); + protected AbstractMetadata() { + super(true, null, null, null, null); } /** @@ -63,31 +65,42 @@ abstract class AbstractMetadata extends IIOMetadata implements Cloneable { } @Override - public Node getAsTree(final String pFormatName) { - validateFormatName(pFormatName); + public Node getAsTree(final String formatName) { + validateFormatName(formatName); - if (pFormatName.equals(nativeMetadataFormatName)) { + if (formatName.equals(nativeMetadataFormatName)) { return getNativeTree(); } - else if (pFormatName.equals(IIOMetadataFormatImpl.standardMetadataFormatName)) { + else if (formatName.equals(IIOMetadataFormatImpl.standardMetadataFormatName)) { return getStandardTree(); } - // TODO: What about extra formats?? - throw new AssertionError("Unreachable"); + // Subclasses that supports extra formats need to check for these formats themselves... + return null; + } + + /** + * Default implementation that throws {@code UnsupportedOperationException}. + * Subclasses that supports formats other than standard metadata should override this method. + * + * @throws UnsupportedOperationException + */ + protected Node getNativeTree() { + throw new UnsupportedOperationException("getNativeTree"); } @Override - public void mergeTree(final String pFormatName, final Node pRoot) throws IIOInvalidTreeException { + public void mergeTree(final String formatName, final Node root) throws IIOInvalidTreeException { assertMutable(); - validateFormatName(pFormatName); + validateFormatName(formatName); - if (!pRoot.getNodeName().equals(nativeMetadataFormatName)) { - throw new IIOInvalidTreeException("Root must be " + nativeMetadataFormatName, pRoot); + if (!root.getNodeName().equals(formatName)) { + throw new IIOInvalidTreeException("Root must be " + formatName, root); } - Node node = pRoot.getFirstChild(); + // TODO: Merge both native and standard! + Node node = root.getFirstChild(); while (node != null) { // TODO: Merge values from node into this @@ -112,21 +125,19 @@ abstract class AbstractMetadata extends IIOMetadata implements Cloneable { } } - protected abstract Node getNativeTree(); - - protected final void validateFormatName(final String pFormatName) { + protected final void validateFormatName(final String formatName) { String[] metadataFormatNames = getMetadataFormatNames(); if (metadataFormatNames != null) { for (String metadataFormatName : metadataFormatNames) { - if (metadataFormatName.equals(pFormatName)) { + if (metadataFormatName.equals(formatName)) { return; // Found, we're ok! } } } throw new IllegalArgumentException( - String.format("Bad format name: \"%s\". Expected one of %s", pFormatName, Arrays.toString(metadataFormatNames)) + String.format("Bad format name: \"%s\". Expected one of %s", formatName, Arrays.toString(metadataFormatNames)) ); } diff --git a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/Entry.java b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/Entry.java index ce7c6074..be03f90c 100644 --- a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/Entry.java +++ b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/Entry.java @@ -64,4 +64,8 @@ public interface Entry { // For arrays only int valueCount(); + + // TODO: getValueAsInt, UnsignedInt, Short, UnsignedShort, Byte, UnsignedByte etc + // TODO: getValueAsIntArray, ShortArray, ByteArray, StringArray etc (also for non-arrays, to return a single element array) + } diff --git a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/EXIFEntry.java b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/EXIFEntry.java index dfe40b72..3fcfadf8 100644 --- a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/EXIFEntry.java +++ b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/EXIFEntry.java @@ -43,7 +43,7 @@ final class EXIFEntry extends AbstractEntry { EXIFEntry(final int identifier, final Object value, final short type) { super(identifier, value); - if (type < 1 || type > TIFF.TYPE_NAMES.length) { + if (type < 1 || type >= TIFF.TYPE_NAMES.length) { throw new IllegalArgumentException(String.format("Illegal EXIF type: %s", type)); } @@ -86,8 +86,16 @@ final class EXIFEntry extends AbstractEntry { return "Compression"; case TIFF.TAG_PHOTOMETRIC_INTERPRETATION: return "PhotometricInterpretation"; + case TIFF.TAG_FILL_ORDER: + return "FillOrder"; + case TIFF.TAG_DOCUMENT_NAME: + return "DocumentName"; case TIFF.TAG_IMAGE_DESCRIPTION: return "ImageDescription"; + case TIFF.TAG_MAKE: + return "Make"; + case TIFF.TAG_MODEL: + return "Model"; case TIFF.TAG_STRIP_OFFSETS: return "StripOffsets"; case TIFF.TAG_ORIENTATION: @@ -106,14 +114,8 @@ final class EXIFEntry extends AbstractEntry { return "PlanarConfiguration"; case TIFF.TAG_RESOLUTION_UNIT: return "ResolutionUnit"; - case TIFF.TAG_JPEG_INTERCHANGE_FORMAT: - return "JPEGInterchangeFormat"; - case TIFF.TAG_JPEG_INTERCHANGE_FORMAT_LENGTH: - return "JPEGInterchangeFormatLength"; - case TIFF.TAG_MAKE: - return "Make"; - case TIFF.TAG_MODEL: - return "Model"; + case TIFF.TAG_PAGE_NUMBER: + return "PageNumber"; case TIFF.TAG_SOFTWARE: return "Software"; case TIFF.TAG_DATE_TIME: @@ -140,10 +142,20 @@ final class EXIFEntry extends AbstractEntry { return "YCbCrPositioning"; case TIFF.TAG_COLOR_MAP: return "ColorMap"; + case TIFF.TAG_INK_SET: + return "InkSet"; + case TIFF.TAG_INK_NAMES: + return "InkNames"; case TIFF.TAG_EXTRA_SAMPLES: return "ExtraSamples"; case TIFF.TAG_SAMPLE_FORMAT: return "SampleFormat"; + case TIFF.TAG_JPEG_TABLES: + return "JPEGTables"; + case TIFF.TAG_JPEG_INTERCHANGE_FORMAT: + return "JPEGInterchangeFormat"; + case TIFF.TAG_JPEG_INTERCHANGE_FORMAT_LENGTH: + return "JPEGInterchangeFormatLength"; case TIFF.TAG_SUB_IFD: return "SubIFD"; @@ -261,6 +273,6 @@ final class EXIFEntry extends AbstractEntry { @Override public String getTypeName() { - return TIFF.TYPE_NAMES[type - 1]; + return TIFF.TYPE_NAMES[type]; } } diff --git a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/EXIFReader.java b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/EXIFReader.java index ac13be42..40ce112f 100644 --- a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/EXIFReader.java +++ b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/EXIFReader.java @@ -446,8 +446,8 @@ public final class EXIFReader extends MetadataReader { } static int getValueLength(final int pType, final int pCount) { - if (pType > 0 && pType <= TIFF.TYPE_LENGTHS.length) { - return TIFF.TYPE_LENGTHS[pType - 1] * pCount; + if (pType > 0 && pType < TIFF.TYPE_LENGTHS.length) { + return TIFF.TYPE_LENGTHS[pType] * pCount; } return -1; diff --git a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/EXIFWriter.java b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/EXIFWriter.java index 558a8d63..66892cb1 100644 --- a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/EXIFWriter.java +++ b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/EXIFWriter.java @@ -94,11 +94,11 @@ public final class EXIFWriter extends MetadataWriter { stream.writeShort(42); } - public long writeIFD(final Collection entries, ImageOutputStream stream) throws IOException { + public long writeIFD(final Collection entries, final ImageOutputStream stream) throws IOException { return writeIFD(new IFD(entries), stream, false); } - private long writeIFD(final Directory original, ImageOutputStream stream, boolean isSubIFD) throws IOException { + private long writeIFD(final Directory original, final ImageOutputStream stream, final boolean isSubIFD) throws IOException { // TIFF spec says tags should be in increasing order, enforce that when writing Directory ordered = ensureOrderedDirectory(original); @@ -183,7 +183,7 @@ public final class EXIFWriter extends MetadataWriter { private Directory ensureOrderedDirectory(final Directory directory) { if (!isSorted(directory)) { - List entries = new ArrayList(directory.size()); + List entries = new ArrayList<>(directory.size()); for (Entry entry : directory) { entries.add(entry); @@ -217,7 +217,7 @@ public final class EXIFWriter extends MetadataWriter { return true; } - private long writeValue(Entry entry, long dataOffset, ImageOutputStream stream) throws IOException { + private long writeValue(final Entry entry, final long dataOffset, final ImageOutputStream stream) throws IOException { short type = getType(entry); int valueLength = EXIFReader.getValueLength(type, getCount(entry)); @@ -238,14 +238,15 @@ public final class EXIFWriter extends MetadataWriter { } } - private int getCount(Entry entry) { + private int getCount(final Entry entry) { Object value = entry.getValue(); return value instanceof String ? ((String) value).getBytes(Charset.forName("UTF-8")).length + 1 : entry.valueCount(); } - private void writeValueInline(Object value, short type, ImageOutputStream stream) throws IOException { + private void writeValueInline(final Object value, final short type, final ImageOutputStream stream) throws IOException { if (value.getClass().isArray()) { switch (type) { + case TIFF.TYPE_UNDEFINED: case TIFF.TYPE_BYTE: stream.write((byte[]) value); break; @@ -293,7 +294,7 @@ public final class EXIFWriter extends MetadataWriter { } } else { - throw new IllegalArgumentException("Unsupported type for TIFF SHORT: " + value.getClass()); + throw new IllegalArgumentException("Unsupported type for TIFF LONG: " + value.getClass()); } stream.writeInts(ints, 0, ints.length); @@ -318,6 +319,7 @@ public final class EXIFWriter extends MetadataWriter { // } else { switch (type) { + case TIFF.TYPE_UNDEFINED: case TIFF.TYPE_BYTE: stream.writeByte((Integer) value); break; @@ -345,7 +347,7 @@ public final class EXIFWriter extends MetadataWriter { } } - private void writeValueAt(long dataOffset, Object value, short type, ImageOutputStream stream) throws IOException { + private void writeValueAt(final long dataOffset, final Object value, final short type, final ImageOutputStream stream) throws IOException { stream.writeInt(assertIntegerOffset(dataOffset)); long position = stream.getStreamPosition(); stream.seek(dataOffset); @@ -353,7 +355,7 @@ public final class EXIFWriter extends MetadataWriter { stream.seek(position); } - private short getType(Entry entry) { + private short getType(final Entry entry) { if (entry instanceof EXIFEntry) { EXIFEntry exifEntry = (EXIFEntry) entry; return exifEntry.getType(); diff --git a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/TIFF.java b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/TIFF.java index daea665f..e7215b1f 100644 --- a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/TIFF.java +++ b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/TIFF.java @@ -88,6 +88,7 @@ public interface TIFF { Should probably all map to Java long (and fail if high bit is set for the unsigned types???) */ String[] TYPE_NAMES = { + null, "BYTE", "ASCII", "SHORT", "LONG", "RATIONAL", "SBYTE", "UNDEFINED", "SSHORT", "SLONG", "SRATIONAL", "FLOAT", "DOUBLE", "IFD", @@ -95,6 +96,7 @@ public interface TIFF { "LONG8", "SLONG8", "IFD8" }; int[] TYPE_LENGTHS = { + -1, 1, 1, 2, 4, 8, 1, 1, 2, 4, 8, 4, 8, 4, @@ -124,6 +126,8 @@ public interface TIFF { int TAG_YCBCR_POSITIONING = 531; int TAG_X_RESOLUTION = 282; int TAG_Y_RESOLUTION = 283; + int TAG_X_POSITION = 286; + int TAG_Y_POSITION = 287; int TAG_RESOLUTION_UNIT = 296; /// B. Tags relating to recording offset @@ -131,6 +135,7 @@ public interface TIFF { int TAG_STRIP_OFFSETS = 273; int TAG_ROWS_PER_STRIP = 278; int TAG_STRIP_BYTE_COUNTS = 279; + int TAG_FREE_OFFSETS = 288; // "Not recommended for general interchange." // "Old-style" JPEG (still used as EXIF thumbnail) int TAG_JPEG_INTERCHANGE_FORMAT = 513; int TAG_JPEG_INTERCHANGE_FORMAT_LENGTH = 514; @@ -153,6 +158,7 @@ public interface TIFF { /// D. Other tags int TAG_DATE_TIME = 306; + int TAG_DOCUMENT_NAME = 269; int TAG_IMAGE_DESCRIPTION = 270; int TAG_MAKE = 271; int TAG_MODEL = 272; diff --git a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/xmp/XMPReader.java b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/xmp/XMPReader.java index 642ecf7f..28abce4f 100644 --- a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/xmp/XMPReader.java +++ b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/xmp/XMPReader.java @@ -71,6 +71,7 @@ public final class XMPReader extends MetadataReader { // TODO: Consider parsing using SAX? // TODO: Determine encoding and parse using a Reader... // TODO: Refactor scanner to return inputstream? + // TODO: Be smarter about ASCII-NULL termination/padding (the SAXParser aka Xerces DOMParser doesn't like it)... DocumentBuilder builder = factory.newDocumentBuilder(); Document document = builder.parse(new InputSource(IIOUtil.createStreamAdapter(input))); diff --git a/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/pcx/PCXMetadata.java b/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/pcx/PCXMetadata.java index 25b376a7..2c6d1ca6 100755 --- a/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/pcx/PCXMetadata.java +++ b/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/pcx/PCXMetadata.java @@ -28,52 +28,22 @@ package com.twelvemonkeys.imageio.plugins.pcx; -import org.w3c.dom.Node; +import com.twelvemonkeys.imageio.AbstractMetadata; -import javax.imageio.metadata.IIOMetadata; -import javax.imageio.metadata.IIOMetadataFormatImpl; import javax.imageio.metadata.IIOMetadataNode; import java.awt.image.IndexColorModel; -final class PCXMetadata extends IIOMetadata { - // TODO: Clean up & extend AbstractMetadata (after moving from PSD -> Core) - +final class PCXMetadata extends AbstractMetadata { private final PCXHeader header; private final IndexColorModel vgaPalette; PCXMetadata(final PCXHeader header, final IndexColorModel vgaPalette) { this.header = header; this.vgaPalette = vgaPalette; - - standardFormatSupported = true; } - @Override public boolean isReadOnly() { - return true; - } - - @Override public Node getAsTree(final String formatName) { - if (IIOMetadataFormatImpl.standardMetadataFormatName.equals(formatName)) { - return getStandardTree(); - } - else { - throw new IllegalArgumentException("Unsupported metadata format: " + formatName); - } - } - - @Override public void mergeTree(final String formatName, final Node root) { - if (isReadOnly()) { - throw new IllegalStateException("Metadata is read-only"); - } - } - - @Override public void reset() { - if (isReadOnly()) { - throw new IllegalStateException("Metadata is read-only"); - } - } - - @Override protected IIOMetadataNode getStandardChromaNode() { + @Override + protected IIOMetadataNode getStandardChromaNode() { IIOMetadataNode chroma = new IIOMetadataNode("Chroma"); IndexColorModel palette = null; @@ -141,7 +111,8 @@ final class PCXMetadata extends IIOMetadata { // No compression - @Override protected IIOMetadataNode getStandardCompressionNode() { + @Override + protected IIOMetadataNode getStandardCompressionNode() { if (header.getCompression() != PCX.COMPRESSION_NONE) { IIOMetadataNode node = new IIOMetadataNode("Compression"); @@ -159,7 +130,8 @@ final class PCXMetadata extends IIOMetadata { return null; } - @Override protected IIOMetadataNode getStandardDataNode() { + @Override + protected IIOMetadataNode getStandardDataNode() { IIOMetadataNode node = new IIOMetadataNode("Data"); // Planar configuration only makes sense for multi-channel images @@ -202,7 +174,8 @@ final class PCXMetadata extends IIOMetadata { return buffer.toString(); } - @Override protected IIOMetadataNode getStandardDimensionNode() { + @Override + protected IIOMetadataNode getStandardDimensionNode() { IIOMetadataNode dimension = new IIOMetadataNode("Dimension"); IIOMetadataNode imageOrientation = new IIOMetadataNode("ImageOrientation"); @@ -218,7 +191,8 @@ final class PCXMetadata extends IIOMetadata { // No tiling - @Override protected IIOMetadataNode getStandardTransparencyNode() { + @Override + protected IIOMetadataNode getStandardTransparencyNode() { // NOTE: There doesn't seem to be any god way to determine transparency, other than by convention // 1 channel: Gray, 2 channel: Gray + Alpha, 3 channel: RGB, 4 channel: RGBA (hopefully never CMYK...) diff --git a/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/PNMMetadata.java b/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/PNMMetadata.java index 267439b5..58578603 100755 --- a/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/PNMMetadata.java +++ b/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/PNMMetadata.java @@ -28,51 +28,22 @@ package com.twelvemonkeys.imageio.plugins.pnm; -import org.w3c.dom.Node; +import com.twelvemonkeys.imageio.AbstractMetadata; -import javax.imageio.metadata.IIOMetadata; -import javax.imageio.metadata.IIOMetadataFormatImpl; import javax.imageio.metadata.IIOMetadataNode; import java.awt.*; import java.awt.image.DataBuffer; import java.nio.ByteOrder; -final class PNMMetadata extends IIOMetadata { - // TODO: Clean up & extend AbstractMetadata (after moving from PSD -> Core) - +final class PNMMetadata extends AbstractMetadata { private final PNMHeader header; PNMMetadata(final PNMHeader header) { this.header = header; - standardFormatSupported = true; } - @Override public boolean isReadOnly() { - return true; - } - - @Override public Node getAsTree(final String formatName) { - if (IIOMetadataFormatImpl.standardMetadataFormatName.equals(formatName)) { - return getStandardTree(); - } - else { - throw new IllegalArgumentException("Unsupported metadata format: " + formatName); - } - } - - @Override public void mergeTree(final String formatName, final Node root) { - if (isReadOnly()) { - throw new IllegalStateException("Metadata is read-only"); - } - } - - @Override public void reset() { - if (isReadOnly()) { - throw new IllegalStateException("Metadata is read-only"); - } - } - - @Override protected IIOMetadataNode getStandardChromaNode() { + @Override + protected IIOMetadataNode getStandardChromaNode() { IIOMetadataNode chroma = new IIOMetadataNode("Chroma"); IIOMetadataNode csType = new IIOMetadataNode("ColorSpaceType"); @@ -105,7 +76,9 @@ final class PNMMetadata extends IIOMetadata { // TODO: Might make sense to set gamma? IIOMetadataNode blackIsZero = new IIOMetadataNode("BlackIsZero"); - blackIsZero.setAttribute("value", header.getTupleType() == TupleType.BLACKANDWHITE_WHITE_IS_ZERO ? "FALSE" : "TRUE"); + blackIsZero.setAttribute("value", header.getTupleType() == TupleType.BLACKANDWHITE_WHITE_IS_ZERO + ? "FALSE" + : "TRUE"); chroma.appendChild(blackIsZero); return chroma; @@ -113,11 +86,14 @@ final class PNMMetadata extends IIOMetadata { // No compression - @Override protected IIOMetadataNode getStandardDataNode() { + @Override + protected IIOMetadataNode getStandardDataNode() { IIOMetadataNode node = new IIOMetadataNode("Data"); IIOMetadataNode sampleFormat = new IIOMetadataNode("SampleFormat"); - sampleFormat.setAttribute("value", header.getTransferType() == DataBuffer.TYPE_FLOAT ? "Real" : "UnsignedIntegral"); + sampleFormat.setAttribute("value", header.getTransferType() == DataBuffer.TYPE_FLOAT + ? "Real" + : "UnsignedIntegral"); node.appendChild(sampleFormat); IIOMetadataNode bitsPerSample = new IIOMetadataNode("BitsPerSample"); @@ -128,7 +104,9 @@ final class PNMMetadata extends IIOMetadata { significantBitsPerSample.setAttribute("value", createListValue(header.getSamplesPerPixel(), Integer.toString(computeSignificantBits()))); node.appendChild(significantBitsPerSample); - String msb = header.getByteOrder() == ByteOrder.BIG_ENDIAN ? "0" : Integer.toString(header.getBitsPerSample() - 1); + String msb = header.getByteOrder() == ByteOrder.BIG_ENDIAN + ? "0" + : Integer.toString(header.getBitsPerSample() - 1); IIOMetadataNode sampleMSB = new IIOMetadataNode("SampleMSB"); sampleMSB.setAttribute("value", createListValue(header.getSamplesPerPixel(), msb)); @@ -166,7 +144,8 @@ final class PNMMetadata extends IIOMetadata { return buffer.toString(); } - @Override protected IIOMetadataNode getStandardDimensionNode() { + @Override + protected IIOMetadataNode getStandardDimensionNode() { IIOMetadataNode dimension = new IIOMetadataNode("Dimension"); IIOMetadataNode imageOrientation = new IIOMetadataNode("ImageOrientation"); @@ -178,7 +157,8 @@ final class PNMMetadata extends IIOMetadata { // No document node - @Override protected IIOMetadataNode getStandardTextNode() { + @Override + protected IIOMetadataNode getStandardTextNode() { if (!header.getComments().isEmpty()) { IIOMetadataNode text = new IIOMetadataNode("Text"); @@ -197,7 +177,8 @@ final class PNMMetadata extends IIOMetadata { // No tiling - @Override protected IIOMetadataNode getStandardTransparencyNode() { + @Override + protected IIOMetadataNode getStandardTransparencyNode() { IIOMetadataNode transparency = new IIOMetadataNode("Transparency"); IIOMetadataNode alpha = new IIOMetadataNode("Alpha"); diff --git a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDMetadata.java b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDMetadata.java index 19bd5d7f..cb9c83f5 100755 --- a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDMetadata.java +++ b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDMetadata.java @@ -28,6 +28,7 @@ package com.twelvemonkeys.imageio.plugins.psd; +import com.twelvemonkeys.imageio.AbstractMetadata; import com.twelvemonkeys.imageio.metadata.Directory; import com.twelvemonkeys.imageio.metadata.Entry; import com.twelvemonkeys.imageio.metadata.exif.TIFF; @@ -571,9 +572,8 @@ public final class PSDMetadata extends AbstractMetadata { compressionNode.appendChild(compressionTypeName); if (compression != PSD.COMPRESSION_NONE) { - IIOMetadataNode lossless = new IIOMetadataNode("Lossless"); - lossless.setAttribute("value", "true"); - compressionNode.appendChild(lossless); + compressionNode.appendChild(new IIOMetadataNode("Lossless")); + // "value" defaults to TRUE, all PSD compressions are lossless } return compressionNode; @@ -755,7 +755,7 @@ public final class PSDMetadata extends AbstractMetadata { } private void appendTextEntriesFlat(final IIOMetadataNode node, final Directory directory, final FilterIterator.Filter filter) { - FilterIterator entries = new FilterIterator(directory.iterator(), filter); + FilterIterator entries = new FilterIterator<>(directory.iterator(), filter); while (entries.hasNext()) { Entry entry = entries.next(); @@ -807,7 +807,7 @@ public final class PSDMetadata extends AbstractMetadata { @SuppressWarnings({"unchecked"}) Iterator iterator = (Iterator) imageResources.iterator(); - return new FilterIterator(iterator, new FilterIterator.Filter() { + return new FilterIterator<>(iterator, new FilterIterator.Filter() { public boolean accept(final T pElement) { return resourceType.isInstance(pElement); } @@ -817,7 +817,7 @@ public final class PSDMetadata extends AbstractMetadata { Iterator getResources(final int... resourceTypes) { Iterator iterator = imageResources.iterator(); - return new FilterIterator(iterator, new FilterIterator.Filter() { + return new FilterIterator<>(iterator, new FilterIterator.Filter() { public boolean accept(final PSDImageResource pResource) { for (int type : resourceTypes) { if (type == pResource.id) { diff --git a/imageio/imageio-sgi/src/main/java/com/twelvemonkeys/imageio/plugins/sgi/SGIMetadata.java b/imageio/imageio-sgi/src/main/java/com/twelvemonkeys/imageio/plugins/sgi/SGIMetadata.java index 16e8b8b6..5e4614fd 100755 --- a/imageio/imageio-sgi/src/main/java/com/twelvemonkeys/imageio/plugins/sgi/SGIMetadata.java +++ b/imageio/imageio-sgi/src/main/java/com/twelvemonkeys/imageio/plugins/sgi/SGIMetadata.java @@ -28,48 +28,19 @@ package com.twelvemonkeys.imageio.plugins.sgi; -import org.w3c.dom.Node; +import com.twelvemonkeys.imageio.AbstractMetadata; -import javax.imageio.metadata.IIOMetadata; -import javax.imageio.metadata.IIOMetadataFormatImpl; import javax.imageio.metadata.IIOMetadataNode; -final class SGIMetadata extends IIOMetadata { - // TODO: Clean up & extend AbstractMetadata (after moving from PSD -> Core) - +final class SGIMetadata extends AbstractMetadata { private final SGIHeader header; SGIMetadata(final SGIHeader header) { this.header = header; - standardFormatSupported = true; } - @Override public boolean isReadOnly() { - return true; - } - - @Override public Node getAsTree(final String formatName) { - if (IIOMetadataFormatImpl.standardMetadataFormatName.equals(formatName)) { - return getStandardTree(); - } - else { - throw new IllegalArgumentException("Unsupported metadata format: " + formatName); - } - } - - @Override public void mergeTree(final String formatName, final Node root) { - if (isReadOnly()) { - throw new IllegalStateException("Metadata is read-only"); - } - } - - @Override public void reset() { - if (isReadOnly()) { - throw new IllegalStateException("Metadata is read-only"); - } - } - - @Override protected IIOMetadataNode getStandardChromaNode() { + @Override + protected IIOMetadataNode getStandardChromaNode() { IIOMetadataNode chroma = new IIOMetadataNode("Chroma"); // NOTE: There doesn't seem to be any god way to determine color space, other than by convention @@ -117,12 +88,15 @@ final class SGIMetadata extends IIOMetadata { // No compression - @Override protected IIOMetadataNode getStandardCompressionNode() { + @Override + protected IIOMetadataNode getStandardCompressionNode() { if (header.getCompression() != SGI.COMPRESSION_NONE) { IIOMetadataNode node = new IIOMetadataNode("Compression"); IIOMetadataNode compressionTypeName = new IIOMetadataNode("CompressionTypeName"); - compressionTypeName.setAttribute("value", header.getCompression() == SGI.COMPRESSION_RLE ? "RLE" : "Uknown"); + compressionTypeName.setAttribute("value", header.getCompression() == SGI.COMPRESSION_RLE + ? "RLE" + : "Uknown"); node.appendChild(compressionTypeName); IIOMetadataNode lossless = new IIOMetadataNode("Lossless"); @@ -135,7 +109,8 @@ final class SGIMetadata extends IIOMetadata { return null; } - @Override protected IIOMetadataNode getStandardDataNode() { + @Override + protected IIOMetadataNode getStandardDataNode() { IIOMetadataNode node = new IIOMetadataNode("Data"); IIOMetadataNode sampleFormat = new IIOMetadataNode("SampleFormat"); @@ -183,7 +158,8 @@ final class SGIMetadata extends IIOMetadata { return buffer.toString(); } - @Override protected IIOMetadataNode getStandardDimensionNode() { + @Override + protected IIOMetadataNode getStandardDimensionNode() { IIOMetadataNode dimension = new IIOMetadataNode("Dimension"); IIOMetadataNode imageOrientation = new IIOMetadataNode("ImageOrientation"); @@ -195,7 +171,8 @@ final class SGIMetadata extends IIOMetadata { // No document node - @Override protected IIOMetadataNode getStandardTextNode() { + @Override + protected IIOMetadataNode getStandardTextNode() { if (!header.getName().isEmpty()) { IIOMetadataNode text = new IIOMetadataNode("Text"); @@ -212,14 +189,17 @@ final class SGIMetadata extends IIOMetadata { // No tiling - @Override protected IIOMetadataNode getStandardTransparencyNode() { + @Override + protected IIOMetadataNode getStandardTransparencyNode() { // NOTE: There doesn't seem to be any god way to determine transparency, other than by convention // 1 channel: Gray, 2 channel: Gray + Alpha, 3 channel: RGB, 4 channel: RGBA (hopefully never CMYK...) IIOMetadataNode transparency = new IIOMetadataNode("Transparency"); IIOMetadataNode alpha = new IIOMetadataNode("Alpha"); - alpha.setAttribute("value", header.getChannels() == 1 || header.getChannels() == 3 ? "none" : "nonpremultiplied"); + alpha.setAttribute("value", header.getChannels() == 1 || header.getChannels() == 3 + ? "none" + : "nonpremultiplied"); transparency.appendChild(alpha); return transparency; diff --git a/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAMetadata.java b/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAMetadata.java index d78cf8f3..f2d8f138 100755 --- a/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAMetadata.java +++ b/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAMetadata.java @@ -28,50 +28,20 @@ package com.twelvemonkeys.imageio.plugins.tga; -import org.w3c.dom.Node; +import com.twelvemonkeys.imageio.AbstractMetadata; -import javax.imageio.metadata.IIOMetadata; -import javax.imageio.metadata.IIOMetadataFormatImpl; import javax.imageio.metadata.IIOMetadataNode; import java.awt.image.IndexColorModel; -final class TGAMetadata extends IIOMetadata { - // TODO: Clean up & extend AbstractMetadata (after moving from PSD -> Core) - +final class TGAMetadata extends AbstractMetadata { private final TGAHeader header; TGAMetadata(final TGAHeader header) { this.header = header; - standardFormatSupported = true; } - @Override public boolean isReadOnly() { - return true; - } - - @Override public Node getAsTree(final String formatName) { - if (IIOMetadataFormatImpl.standardMetadataFormatName.equals(formatName)) { - return getStandardTree(); - } - else { - throw new IllegalArgumentException("Unsupported metadata format: " + formatName); - } - } - - @Override public void mergeTree(final String formatName, final Node root) { - if (isReadOnly()) { - throw new IllegalStateException("Metadata is read-only"); - } - } - - @Override public void reset() { - if (isReadOnly()) { - throw new IllegalStateException("Metadata is read-only"); - } - } - - - @Override protected IIOMetadataNode getStandardChromaNode() { + @Override + protected IIOMetadataNode getStandardChromaNode() { IIOMetadataNode chroma = new IIOMetadataNode("Chroma"); IIOMetadataNode csType = new IIOMetadataNode("ColorSpaceType"); @@ -137,7 +107,8 @@ final class TGAMetadata extends IIOMetadata { return chroma; } - @Override protected IIOMetadataNode getStandardCompressionNode() { + @Override + protected IIOMetadataNode getStandardCompressionNode() { switch (header.getImageType()) { case TGA.IMAGETYPE_COLORMAPPED_RLE: case TGA.IMAGETYPE_TRUECOLOR_RLE: @@ -147,7 +118,7 @@ final class TGAMetadata extends IIOMetadata { IIOMetadataNode node = new IIOMetadataNode("Compression"); IIOMetadataNode compressionTypeName = new IIOMetadataNode("CompressionTypeName"); String value = header.getImageType() == TGA.IMAGETYPE_COLORMAPPED_HUFFMAN || header.getImageType() == TGA.IMAGETYPE_COLORMAPPED_HUFFMAN_QUADTREE - ? "Uknown" : "RLE"; + ? "Uknown" : "RLE"; compressionTypeName.setAttribute("value", value); node.appendChild(compressionTypeName); @@ -162,7 +133,8 @@ final class TGAMetadata extends IIOMetadata { } } - @Override protected IIOMetadataNode getStandardDataNode() { + @Override + protected IIOMetadataNode getStandardDataNode() { IIOMetadataNode node = new IIOMetadataNode("Data"); IIOMetadataNode planarConfiguration = new IIOMetadataNode("PlanarConfiguration"); @@ -221,7 +193,8 @@ final class TGAMetadata extends IIOMetadata { return buffer.toString(); } - @Override protected IIOMetadataNode getStandardDimensionNode() { + @Override + protected IIOMetadataNode getStandardDimensionNode() { IIOMetadataNode dimension = new IIOMetadataNode("Dimension"); IIOMetadataNode imageOrientation = new IIOMetadataNode("ImageOrientation"); @@ -248,7 +221,8 @@ final class TGAMetadata extends IIOMetadata { // No document node - @Override protected IIOMetadataNode getStandardTextNode() { + @Override + protected IIOMetadataNode getStandardTextNode() { // TODO: Extra "developer area" and other stuff might go here... if (header.getIdentification() != null && !header.getIdentification().isEmpty()) { IIOMetadataNode text = new IIOMetadataNode("Text"); @@ -266,7 +240,8 @@ final class TGAMetadata extends IIOMetadata { // No tiling - @Override protected IIOMetadataNode getStandardTransparencyNode() { + @Override + protected IIOMetadataNode getStandardTransparencyNode() { IIOMetadataNode transparency = new IIOMetadataNode("Transparency"); IIOMetadataNode alpha = new IIOMetadataNode("Alpha"); diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFBaseline.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFBaseline.java index 2fbd54e5..6d9a8cee 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFBaseline.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFBaseline.java @@ -59,4 +59,13 @@ interface TIFFBaseline { int RESOLUTION_UNIT_NONE = 1; int RESOLUTION_UNIT_DPI = 2; // Default int RESOLUTION_UNIT_CENTIMETER = 3; + + int FILL_LEFT_TO_RIGHT = 1; // Default + + // NOTE: These are bit flags that can be ORed together! + int FILETYPE_REDUCEDIMAGE = 1; + int FILETYPE_PAGE = 2; + int FILETYPE_MASK = 4; + + int ORIENTATION_TOPLEFT = 1; } diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFExtension.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFExtension.java index de714606..994ffd4f 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFExtension.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFExtension.java @@ -83,4 +83,13 @@ interface TIFFExtension { * description of the inks to be used. */ int INKSET_NOT_CMYK = 2; + + int ORIENTATION_TOPRIGHT = 2; + int ORIENTATION_BOTRIGHT = 3; + int ORIENTATION_BOTLEFT = 4; + int ORIENTATION_LEFTTOP = 5; + int ORIENTATION_RIGHTTOP = 6; + int ORIENTATION_RIGHTBOT = 7; + int ORIENTATION_LEFTBOT = 8; + } diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageMetadata.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageMetadata.java new file mode 100644 index 00000000..5b6e44c2 --- /dev/null +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageMetadata.java @@ -0,0 +1,824 @@ +package com.twelvemonkeys.imageio.plugins.tiff; + +import com.twelvemonkeys.imageio.AbstractMetadata; +import com.twelvemonkeys.imageio.metadata.Directory; +import com.twelvemonkeys.imageio.metadata.Entry; +import com.twelvemonkeys.imageio.metadata.exif.TIFF; +import com.twelvemonkeys.lang.Validate; + +import javax.imageio.metadata.IIOMetadataNode; +import java.lang.reflect.Array; +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Arrays; +import java.util.Calendar; + +/** + * TIFFImageMetadata. + * + * @author Harald Kuhr + * @author last modified by $Author: harald.kuhr$ + * @version $Id: TIFFImageMetadata.java,v 1.0 17/04/15 harald.kuhr Exp$ + */ +final class TIFFImageMetadata extends AbstractMetadata { + + private final Directory ifd; + + TIFFImageMetadata(final Directory ifd) { + super(true, TIFFMedataFormat.SUN_NATIVE_IMAGE_METADATA_FORMAT_NAME, TIFFMedataFormat.class.getName(), null, null); + this.ifd = Validate.notNull(ifd, "IFD"); + } + + @Override + public boolean isReadOnly() { + return false; + } + + protected IIOMetadataNode getNativeTree() { + IIOMetadataNode root = new IIOMetadataNode(nativeMetadataFormatName); + root.appendChild(asTree(ifd)); + + return root; + } + + private IIOMetadataNode asTree(final Directory ifd) { + IIOMetadataNode ifdNode = new IIOMetadataNode("TIFFIFD"); + + for (Entry tag : ifd) { + IIOMetadataNode tagNode; + Object value = tag.getValue(); + + if (value instanceof Directory) { + // TODO: Don't expand non-TIFF IFDs... + tagNode = asTree((Directory) value); + tagNode.setAttribute("parentTagNumber", String.valueOf(tag.getIdentifier())); + String fieldName = tag.getFieldName(); + if (fieldName != null) { + tagNode.setAttribute("parentTagName", fieldName); + } + + // TODO: tagSets is REQUIRED! + } + else { + tagNode = new IIOMetadataNode("TIFFField"); + tagNode.setAttribute("number", String.valueOf(tag.getIdentifier())); + + String fieldName = tag.getFieldName(); + if (fieldName != null) { + tagNode.setAttribute("name", fieldName); + } + + int count = tag.valueCount(); + + if (TIFF.TYPE_NAMES[TIFF.TYPE_UNDEFINED].equals(tag.getTypeName())) { + // Why does "undefined" need special handling?! It's just a byte array.. :-P + // Or maybe rather, why isn't all types implemented like this..? + // TODO: Consider handling IPTC, Photoshop/Adobe, XMP and ICC Profile as Undefined always + // (even if older software wrote as Byte), as it's more compact? + IIOMetadataNode valueNode = new IIOMetadataNode("TIFFUndefined"); + tagNode.appendChild(valueNode); + + if (count == 1) { + valueNode.setAttribute("value", String.valueOf(value)); + } + else { + valueNode.setAttribute("value", Arrays.toString((byte[]) value).replaceAll("\\[?\\]?", "")); + } + } + else { + String arrayTypeName = getMetadataArrayType(tag); + IIOMetadataNode valueNode = new IIOMetadataNode(arrayTypeName); + tagNode.appendChild(valueNode); + + boolean unsigned = !isSignedType(tag); + String typeName = getMetadataType(tag); + + // NOTE: ASCII/Strings have count 1, always. This seems consistent with the JAI ImageIO version. + if (count == 1) { + IIOMetadataNode elementNode = new IIOMetadataNode(typeName); + valueNode.appendChild(elementNode); + + setValue(value, unsigned, elementNode); + } + else { + for (int i = 0; i < count; i++) { + Object val = Array.get(value, i); + IIOMetadataNode elementNode = new IIOMetadataNode(typeName); + valueNode.appendChild(elementNode); + + setValue(val, unsigned, elementNode); + } + } + } + } + + ifdNode.appendChild(tagNode); + } + + return ifdNode; + } + + private void setValue(final Object value, final boolean unsigned, final IIOMetadataNode elementNode) { + if (unsigned && value instanceof Byte) { + elementNode.setAttribute("value", String.valueOf((Byte) value & 0xFF)); + } + else if (unsigned && value instanceof Short) { + elementNode.setAttribute("value", String.valueOf((Short) value & 0xFFFF)); + } + else if (unsigned && value instanceof Integer) { + elementNode.setAttribute("value", String.valueOf((Integer) value & 0xFFFFFFFFl)); + } + else { + elementNode.setAttribute("value", String.valueOf(value)); + } + } + + private boolean isSignedType(final Entry tag) { + String typeName = tag.getTypeName(); + + // Stupid special cases implementation, until we can access the type id... + if ("SBYTE".equals(typeName)) { + return true; + } + if ("SSHORT".equals(typeName)) { + return true; + } + if ("SLONG".equals(typeName)) { + return true; + } + if ("SRATIONAL".equals(typeName)) { + return true; + } + if ("FLOAT".equals(typeName)) { + return true; + } + if ("DOUBLE".equals(typeName)) { + return true; + } + if ("SLONG8".equals(typeName)) { + return true; + } + // IFD8 not used + + return false; + } + + private String getMetadataArrayType(final Entry tag) { + String typeName = tag.getTypeName(); + + // Stupid special cases implementation, until we can access the type id... + if ("BYTE".equals(typeName)) { + return "TIFFBytes"; + } + if ("ASCII".equals(typeName)) { + return "TIFFAsciis"; + } + if ("SHORT".equals(typeName)) { + return "TIFFShorts"; + } + if ("LONG".equals(typeName)) { + return "TIFFLongs"; + } + if ("RATIONAL".equals(typeName)) { + return "TIFFRationals"; + } + // UNDEFINED not used... + if ("SBYTE".equals(typeName)) { + return "TIFFSBytes"; + } + if ("SSHORT".equals(typeName)) { + return "TIFFSShorts"; + } + if ("SLONG".equals(typeName)) { + return "TIFFSLongs"; + } + if ("SRATIONAL".equals(typeName)) { + return "TIFFSRationals"; + } + if ("FLOAT".equals(typeName)) { + return "TIFFFloats"; + } + if ("DOUBLE".equals(typeName)) { + return "TIFFDoubles"; + } + // IFD not used + if ("LONG8".equals(typeName)) { + return "TIFFLong8s"; + } + if ("SLONG8".equals(typeName)) { + return "TIFFSLong8s"; + } + // IFD8 not used + + throw new IllegalArgumentException(typeName); + } + + private String getMetadataType(final Entry tag) { + String typeName = tag.getTypeName(); + + // Stupid special cases implementation, until we can access the type id... + if ("BYTE".equals(typeName)) { + return "TIFFByte"; + } + if ("ASCII".equals(typeName)) { + return "TIFFAscii"; + } + if ("SHORT".equals(typeName)) { + return "TIFFShort"; + } + if ("LONG".equals(typeName)) { + return "TIFFLong"; + } + if ("RATIONAL".equals(typeName)) { + return "TIFFRational"; + } + // UNDEFINED not used... + if ("SBYTE".equals(typeName)) { + return "TIFFSByte"; + } + if ("SSHORT".equals(typeName)) { + return "TIFFSShort"; + } + if ("SLONG".equals(typeName)) { + return "TIFFSLong"; + } + if ("SRATIONAL".equals(typeName)) { + return "TIFFSRational"; + } + if ("FLOAT".equals(typeName)) { + return "TIFFFloat"; + } + if ("DOUBLE".equals(typeName)) { + return "TIFFDouble"; + } + // IFD not used + if ("LONG8".equals(typeName)) { + return "TIFFLong8"; + } + if ("SLONG8".equals(typeName)) { + return "TIFFSLong8"; + } + // IFD8 not used + + throw new IllegalArgumentException(typeName); + } + + // TODO: Candidate superclass method! + private IIOMetadataNode addChildNode(final IIOMetadataNode parent, + final String name, + final Object object) { + IIOMetadataNode child = new IIOMetadataNode(name); + + if (object != null) { + child.setUserObject(object); // TODO: Should we always store user object?!?! + child.setNodeValue(object.toString()); // TODO: Fix this line + } + + parent.appendChild(child); + + return child; + } + + /// Standard metadata + // See: http://download.java.net/media/jai-imageio/javadoc/1.1/com/sun/media/imageio/plugins/tiff/package-summary.html + + @Override + protected IIOMetadataNode getStandardChromaNode() { + IIOMetadataNode chroma = new IIOMetadataNode("Chroma"); + + // Handle ColorSpaceType (RGB/CMYK/YCbCr etc)... + Entry photometricTag = ifd.getEntryById(TIFF.TAG_PHOTOMETRIC_INTERPRETATION); + int photometricValue = ((Number) photometricTag.getValue()).intValue(); // No default for this tag! + + Entry samplesPerPixelTag = ifd.getEntryById(TIFF.TAG_SAMPLES_PER_PIXEL); + Entry bitsPerSampleTag = ifd.getEntryById(TIFF.TAG_BITS_PER_SAMPLE); + int numChannelsValue = samplesPerPixelTag != null + ? ((Number) samplesPerPixelTag.getValue()).intValue() + : bitsPerSampleTag.valueCount(); + + IIOMetadataNode colorSpaceType = new IIOMetadataNode("ColorSpaceType"); + chroma.appendChild(colorSpaceType); + switch (photometricValue) { + case TIFFBaseline.PHOTOMETRIC_WHITE_IS_ZERO: + case TIFFBaseline.PHOTOMETRIC_BLACK_IS_ZERO: + case TIFFBaseline.PHOTOMETRIC_MASK: // It's really a transparency mask/alpha channel, but... + colorSpaceType.setAttribute("value", "GRAY"); + break; + case TIFFBaseline.PHOTOMETRIC_RGB: + case TIFFBaseline.PHOTOMETRIC_PALETTE: + colorSpaceType.setAttribute("value", "RGB"); + break; + case TIFFExtension.PHOTOMETRIC_YCBCR: + colorSpaceType.setAttribute("value", "YCbCr"); + break; + case TIFFExtension.PHOTOMETRIC_CIELAB: + case TIFFExtension.PHOTOMETRIC_ICCLAB: + case TIFFExtension.PHOTOMETRIC_ITULAB: + colorSpaceType.setAttribute("value", "Lab"); + break; + case TIFFExtension.PHOTOMETRIC_SEPARATED: + // TODO: May be CMYK, or something else... Consult InkSet and NumberOfInks! + if (numChannelsValue == 3) { + colorSpaceType.setAttribute("value", "CMY"); + } + else { + colorSpaceType.setAttribute("value", "CMYK"); + } + break; + case TIFFCustom.PHOTOMETRIC_LOGL: // ..? + case TIFFCustom.PHOTOMETRIC_LOGLUV: + colorSpaceType.setAttribute("value", "Luv"); + break; + case TIFFCustom.PHOTOMETRIC_CFA: + case TIFFCustom.PHOTOMETRIC_LINEAR_RAW: // ...or is this RGB? + colorSpaceType.setAttribute("value", "3CLR"); + break; + default: + colorSpaceType.setAttribute("value", Integer.toHexString(numChannelsValue) + "CLR"); + break; + } + + // NumChannels + IIOMetadataNode numChannels = new IIOMetadataNode("NumChannels"); + chroma.appendChild(numChannels); + if (photometricValue == TIFFBaseline.PHOTOMETRIC_PALETTE) { + numChannels.setAttribute("value", "3"); + } + else { + numChannels.setAttribute("value", Integer.toString(numChannelsValue)); + } + + // BlackIsZero (defaults to TRUE) + IIOMetadataNode blackIsZero = new IIOMetadataNode("BlackIsZero"); + chroma.appendChild(blackIsZero); + switch (photometricValue) { + case TIFFBaseline.PHOTOMETRIC_WHITE_IS_ZERO: + blackIsZero.setAttribute("value", "FALSE"); + break; + default: + break; + } + + Entry colorMapTag = ifd.getEntryById(TIFF.TAG_COLOR_MAP); + + if (colorMapTag != null) { + int[] colorMapValues = (int[]) colorMapTag.getValue(); + + IIOMetadataNode palette = new IIOMetadataNode("Palette"); + chroma.appendChild(palette); + + int count = colorMapValues.length / 3; + for (int i = 0; i < count; i++) { + IIOMetadataNode paletteEntry = new IIOMetadataNode("PaletteEntry"); + paletteEntry.setAttribute("index", Integer.toString(i)); + + // TODO: See TIFFImageReader createIndexColorModel, to detect 8 bit colorMap + paletteEntry.setAttribute("red", Integer.toString((colorMapValues[i] >> 8) & 0xff)); + paletteEntry.setAttribute("green", Integer.toString((colorMapValues[i + count] >> 8) & 0xff)); + paletteEntry.setAttribute("blue", Integer.toString((colorMapValues[i + count * 2] >> 8) & 0xff)); + + palette.appendChild(paletteEntry); + } + } + + return chroma; + } + + @Override + protected IIOMetadataNode getStandardCompressionNode() { + IIOMetadataNode compression = new IIOMetadataNode("Compression"); + IIOMetadataNode compressionTypeName = addChildNode(compression, "CompressionTypeName", null); + + Entry compressionTag = ifd.getEntryById(TIFF.TAG_COMPRESSION); + int compressionValue = compressionTag == null + ? TIFFBaseline.COMPRESSION_NONE + : ((Number) compressionTag.getValue()).intValue(); + + // Naming is identical to JAI ImageIO metadata as far as possible + switch (compressionValue) { + case TIFFBaseline.COMPRESSION_NONE: + compressionTypeName.setAttribute("value", "None"); + break; + case TIFFBaseline.COMPRESSION_CCITT_MODIFIED_HUFFMAN_RLE: + compressionTypeName.setAttribute("value", "CCITT RLE"); + break; + case TIFFExtension.COMPRESSION_CCITT_T4: + compressionTypeName.setAttribute("value", "CCITT T4"); + break; + case TIFFExtension.COMPRESSION_CCITT_T6: + compressionTypeName.setAttribute("value", "CCITT T6"); + break; + case TIFFExtension.COMPRESSION_LZW: + compressionTypeName.setAttribute("value", "LZW"); + break; + case TIFFExtension.COMPRESSION_OLD_JPEG: + compressionTypeName.setAttribute("value", "Old JPEG"); + break; + case TIFFExtension.COMPRESSION_JPEG: + compressionTypeName.setAttribute("value", "JPEG"); + break; + case TIFFExtension.COMPRESSION_ZLIB: + compressionTypeName.setAttribute("value", "ZLib"); + break; + case TIFFExtension.COMPRESSION_DEFLATE: + compressionTypeName.setAttribute("value", "Deflate"); + break; + case TIFFBaseline.COMPRESSION_PACKBITS: + compressionTypeName.setAttribute("value", "PackBits"); + break; + case TIFFCustom.COMPRESSION_CCITTRLEW: + compressionTypeName.setAttribute("value", "CCITT RLEW"); + break; + case TIFFCustom.COMPRESSION_DCS: + compressionTypeName.setAttribute("value", "DCS"); + break; + case TIFFCustom.COMPRESSION_IT8BL: + compressionTypeName.setAttribute("value", "IT8BL"); + break; + case TIFFCustom.COMPRESSION_IT8CTPAD: + compressionTypeName.setAttribute("value", "IT8CTPAD"); + break; + case TIFFCustom.COMPRESSION_IT8LW: + compressionTypeName.setAttribute("value", "IT8LW"); + break; + case TIFFCustom.COMPRESSION_IT8MP: + compressionTypeName.setAttribute("value", "IT8MP"); + break; + case TIFFCustom.COMPRESSION_JBIG: + compressionTypeName.setAttribute("value", "JBIG"); + break; + case TIFFCustom.COMPRESSION_JPEG2000: + compressionTypeName.setAttribute("value", "JPEG 2000"); + break; + case TIFFCustom.COMPRESSION_NEXT: + compressionTypeName.setAttribute("value", "NEXT"); + break; + case TIFFCustom.COMPRESSION_PIXARFILM: + compressionTypeName.setAttribute("value", "Pixar Film"); + break; + case TIFFCustom.COMPRESSION_PIXARLOG: + compressionTypeName.setAttribute("value", "Pixar Log"); + break; + case TIFFCustom.COMPRESSION_SGILOG: + compressionTypeName.setAttribute("value", "SGI Log"); + break; + case TIFFCustom.COMPRESSION_SGILOG24: + compressionTypeName.setAttribute("value", "SGI Log24"); + break; + case TIFFCustom.COMPRESSION_THUNDERSCAN: + compressionTypeName.setAttribute("value", "ThunderScan"); + break; + default: + compressionTypeName.setAttribute("value", "Unknown " + compressionValue); + break; + } + + if (compressionValue != TIFFBaseline.COMPRESSION_NONE) { + // Lossless (defaults to TRUE) + IIOMetadataNode lossless = new IIOMetadataNode("Lossless"); + compression.appendChild(lossless); + + switch (compressionValue) { + case TIFFExtension.COMPRESSION_OLD_JPEG: + case TIFFExtension.COMPRESSION_JPEG: + case TIFFCustom.COMPRESSION_JBIG: + case TIFFCustom.COMPRESSION_JPEG2000: + lossless.setAttribute("value", "FALSE"); + break; + default: + break; + } + } + + return compression; + } + + @Override + protected IIOMetadataNode getStandardDataNode() { + IIOMetadataNode node = new IIOMetadataNode("Data"); + + IIOMetadataNode planarConfiguration = new IIOMetadataNode("PlanarConfiguration"); + Entry planarConfigurationTag = ifd.getEntryById(TIFF.TAG_PLANAR_CONFIGURATION); + int planarConfigurationValue = planarConfigurationTag == null + ? TIFFBaseline.PLANARCONFIG_CHUNKY + : ((Number) planarConfigurationTag.getValue()).intValue(); + + switch (planarConfigurationValue) { + case TIFFBaseline.PLANARCONFIG_CHUNKY: + planarConfiguration.setAttribute("value", "PixelInterleaved"); + break; + case TIFFExtension.PLANARCONFIG_PLANAR: + planarConfiguration.setAttribute("value", "PlaneInterleaved"); + break; + default: + planarConfiguration.setAttribute("value", "Unknown " + planarConfigurationValue); + } + node.appendChild(planarConfiguration); + + Entry photometricInterpretationTag = ifd.getEntryById(TIFF.TAG_PHOTOMETRIC_INTERPRETATION); + int photometricInterpretationValue = photometricInterpretationTag == null + ? TIFFBaseline.PHOTOMETRIC_WHITE_IS_ZERO + : ((Number) photometricInterpretationTag.getValue()).intValue(); + + Entry samleFormatTag = ifd.getEntryById(TIFF.TAG_SAMPLE_FORMAT); + int sampleFormatValue = samleFormatTag == null + ? TIFFBaseline.SAMPLEFORMAT_UINT + : ((Number) samleFormatTag.getValue()).intValue(); + IIOMetadataNode sampleFormat = new IIOMetadataNode("SampleFormat"); + node.appendChild(sampleFormat); + switch (sampleFormatValue) { + case TIFFBaseline.SAMPLEFORMAT_UINT: + if (photometricInterpretationValue == TIFFBaseline.PHOTOMETRIC_PALETTE) { + sampleFormat.setAttribute("value", "Index"); + } + else { + sampleFormat.setAttribute("value", "UnsignedIntegral"); + } + break; + case TIFFExtension.SAMPLEFORMAT_INT: + sampleFormat.setAttribute("value", "SignedIntegral"); + break; + case TIFFExtension.SAMPLEFORMAT_FP: + sampleFormat.setAttribute("value", "Real"); + break; + default: + sampleFormat.setAttribute("value", "Unknown " + sampleFormatValue); + break; + } + + // TODO: See TIFFImageReader.getBitsPerSample + fix the metadata to have getAsXxxArray methods. + // BitsPerSample (not required field for Class B/Bilevel, defaults to 1) + Entry bitsPerSampleTag = ifd.getEntryById(TIFF.TAG_BITS_PER_SAMPLE); + String bitsPerSampleValue = bitsPerSampleTag == null && + (photometricInterpretationValue == TIFFBaseline.PHOTOMETRIC_WHITE_IS_ZERO || + photometricInterpretationValue == TIFFBaseline.PHOTOMETRIC_BLACK_IS_ZERO) + ? "1" + : bitsPerSampleTag.getValueAsString().replaceAll("\\[?\\]?,?", ""); + + IIOMetadataNode bitsPerSample = new IIOMetadataNode("BitsPerSample"); + node.appendChild(bitsPerSample); + bitsPerSample.setAttribute("value", bitsPerSampleValue); + + Entry samplesPerPixelTag = ifd.getEntryById(TIFF.TAG_SAMPLES_PER_PIXEL); + int numChannelsValue = samplesPerPixelTag != null + ? ((Number) samplesPerPixelTag.getValue()).intValue() + : bitsPerSampleTag.valueCount(); + + // SampleMSB + Entry fillOrderTag = ifd.getEntryById(TIFF.TAG_FILL_ORDER); + int fillOrder = fillOrderTag != null + ? ((Number) fillOrderTag.getValue()).intValue() + : TIFFBaseline.FILL_LEFT_TO_RIGHT; + IIOMetadataNode sampleMSB = new IIOMetadataNode("SampleMSB"); + node.appendChild(sampleMSB); + if (fillOrder == TIFFBaseline.FILL_LEFT_TO_RIGHT) { + sampleMSB.setAttribute("value", createListValue(numChannelsValue, "0")); + } + else { + if ("1".equals(bitsPerSampleValue)) { + sampleMSB.setAttribute("value", createListValue(numChannelsValue, "7")); + } + else { + // TODO: FixMe for bitsPerSample > 8 + sampleMSB.setAttribute("value", createListValue(numChannelsValue, "7")); + } + } + + return node; + } + + // TODO: Candidate superclass method! + private String createListValue(final int itemCount, final String... values) { + StringBuilder buffer = new StringBuilder(); + + for (int i = 0; i < itemCount; i++) { + if (buffer.length() > 0) { + buffer.append(' '); + } + + buffer.append(values[i % values.length]); + } + + return buffer.toString(); + } + + @Override + protected IIOMetadataNode getStandardDimensionNode() { + IIOMetadataNode dimension = new IIOMetadataNode("Dimension"); + + // PixelAspectRatio + Entry xResTag = ifd.getEntryById(TIFF.TAG_X_RESOLUTION); + Entry yResTag = ifd.getEntryById(TIFF.TAG_Y_RESOLUTION); + double xSizeValue = 1 / (xResTag == null ? 72.0 : ((Number) xResTag.getValue()).doubleValue()); + double ySizeValue = 1 / (xResTag == null ? 72.0 : ((Number) yResTag.getValue()).doubleValue()); + + IIOMetadataNode pixelAspectRatio = new IIOMetadataNode("PixelAspectRatio"); + dimension.appendChild(pixelAspectRatio); + pixelAspectRatio.setAttribute("value", String.valueOf(xSizeValue / ySizeValue)); + + // ImageOrientation + Entry orientationTag = ifd.getEntryById(TIFF.TAG_ORIENTATION); + if (orientationTag != null) { + int orientationValue = ((Number) orientationTag.getValue()).intValue(); + + String value = null; + switch (orientationValue) { + case TIFFBaseline.ORIENTATION_TOPLEFT: + value = "Normal"; + break; + case TIFFExtension.ORIENTATION_TOPRIGHT: + value = "FlipH"; + break; + case TIFFExtension.ORIENTATION_BOTRIGHT: + value = "Rotate180"; + break; + case TIFFExtension.ORIENTATION_BOTLEFT: + value = "FlipV"; + break; + case TIFFExtension.ORIENTATION_LEFTTOP: + value = "FlipHRotate90"; + break; + case TIFFExtension.ORIENTATION_RIGHTTOP: + value = "Rotate270"; + break; + case TIFFExtension.ORIENTATION_RIGHTBOT: + value = "FlipVRotate90"; + break; + case TIFFExtension.ORIENTATION_LEFTBOT: + value = "Rotate90"; + break; + } + + if (value != null) { + IIOMetadataNode imageOrientation = new IIOMetadataNode("ImageOrientation"); + dimension.appendChild(imageOrientation); + imageOrientation.setAttribute("value", value); + } + + } + + Entry resUnitTag = ifd.getEntryById(TIFF.TAG_RESOLUTION_UNIT); + int resUnitValue = resUnitTag == null ? TIFFBaseline.RESOLUTION_UNIT_DPI : ((Number) resUnitTag.getValue()).intValue(); + if (resUnitValue == TIFFBaseline.RESOLUTION_UNIT_CENTIMETER || resUnitValue == TIFFBaseline.RESOLUTION_UNIT_DPI) { + // 10 mm in 1 cm or 25.4 mm in 1 inch + double scale = resUnitValue == TIFFBaseline.RESOLUTION_UNIT_CENTIMETER ? 10 : 25.4; + + // HorizontalPixelSize + // VerticalPixelSize + IIOMetadataNode horizontalPixelSize = new IIOMetadataNode("HorizontalPixelSize"); + dimension.appendChild(horizontalPixelSize); + horizontalPixelSize.setAttribute("value", String.valueOf(xSizeValue * scale)); + + IIOMetadataNode verticalPixelSize = new IIOMetadataNode("VerticalPixelSize"); + dimension.appendChild(verticalPixelSize); + verticalPixelSize.setAttribute("value", String.valueOf(ySizeValue * scale)); + + // HorizontalPosition + // VerticalPosition + Entry xPosTag = ifd.getEntryById(TIFF.TAG_X_POSITION); + Entry yPosTag = ifd.getEntryById(TIFF.TAG_Y_POSITION); + + if (xPosTag != null && yPosTag != null) { + double xPosValue = ((Number) xPosTag.getValue()).doubleValue(); + double yPosValue = ((Number) yPosTag.getValue()).doubleValue(); + + IIOMetadataNode horizontalPosition = new IIOMetadataNode("HorizontalPosition"); + dimension.appendChild(horizontalPosition); + horizontalPosition.setAttribute("value", String.valueOf(xPosValue * scale)); + + IIOMetadataNode verticalPosition = new IIOMetadataNode("VerticalPosition"); + dimension.appendChild(verticalPosition); + verticalPosition.setAttribute("value", String.valueOf(yPosValue * scale)); + } + } + + return dimension; + } + + @Override + protected IIOMetadataNode getStandardTransparencyNode() { + // Consult ExtraSamples + Entry extraSamplesTag = ifd.getEntryById(TIFF.TAG_EXTRA_SAMPLES); + + if (extraSamplesTag != null) { + int extraSamplesValue = (extraSamplesTag.getValue() instanceof Number) + ? ((Number) extraSamplesTag.getValue()).intValue() + : ((Number) Array.get(extraSamplesTag.getValue(), 0)).intValue(); + + // Other values exists, these are not alpha + if (extraSamplesValue == TIFFBaseline.EXTRASAMPLE_ASSOCIATED_ALPHA || extraSamplesValue == TIFFBaseline.EXTRASAMPLE_UNASSOCIATED_ALPHA) { + IIOMetadataNode transparency = new IIOMetadataNode("Transparency"); + IIOMetadataNode alpha = new IIOMetadataNode("Alpha"); + transparency.appendChild(alpha); + + alpha.setAttribute("value", extraSamplesValue == TIFFBaseline.EXTRASAMPLE_ASSOCIATED_ALPHA + ? "premultiplied" + : "nonpremultiplied"); + + return transparency; + } + } + + return null; + + } + + @Override + protected IIOMetadataNode getStandardDocumentNode() { + IIOMetadataNode document = new IIOMetadataNode("Document"); + + // FormatVersion, hardcoded to 6.0 (the current TIFF specification version), + // as there's no format information in the TIFF structure. + IIOMetadataNode formatVersion = new IIOMetadataNode("FormatVersion"); + document.appendChild(formatVersion); + formatVersion.setAttribute("value", "6.0"); + + // SubImageInterpretation from SubImageInterpretation (if applicable) + Entry subFileTypeTag = ifd.getEntryById(TIFF.TAG_SUBFILE_TYPE); + if (subFileTypeTag != null) { + // NOTE: The JAI metadata is somewhat broken here, as these are bit flags, not values... + String value = null; + int subFileTypeValue = ((Number) subFileTypeTag.getValue()).intValue(); + if ((subFileTypeValue & TIFFBaseline.FILETYPE_MASK) != 0) { + value = "TransparencyMask"; + } + else if ((subFileTypeValue & TIFFBaseline.FILETYPE_REDUCEDIMAGE) != 0) { + value = "ReducedResolution"; + } + else if ((subFileTypeValue & TIFFBaseline.FILETYPE_PAGE) != 0) { + value = "SinglePage"; + } + + // If no flag is set, we don't know... + if (value != null) { + IIOMetadataNode subImageInterpretation = new IIOMetadataNode("SubImageInterpretation"); + document.appendChild(subImageInterpretation); + subImageInterpretation.setAttribute("value", value); + } + } + + // ImageCreationTime from DateTime + Entry dateTimeTag = ifd.getEntryById(TIFF.TAG_DATE_TIME); + if (dateTimeTag != null) { + DateFormat format = new SimpleDateFormat("yyyy:MM:dd hh:mm:ss"); + + try { + IIOMetadataNode imageCreationTime = new IIOMetadataNode("ImageCreationTime"); + document.appendChild(imageCreationTime); + + Calendar date = Calendar.getInstance(); + date.setTime(format.parse(dateTimeTag.getValueAsString())); + + imageCreationTime.setAttribute("year", String.valueOf(date.get(Calendar.YEAR))); + imageCreationTime.setAttribute("month", String.valueOf(date.get(Calendar.MONTH) + 1)); + imageCreationTime.setAttribute("day", String.valueOf(date.get(Calendar.DAY_OF_MONTH))); + imageCreationTime.setAttribute("hour", String.valueOf(date.get(Calendar.HOUR_OF_DAY))); + imageCreationTime.setAttribute("minute", String.valueOf(date.get(Calendar.MINUTE))); + imageCreationTime.setAttribute("second", String.valueOf(date.get(Calendar.SECOND))); + } + catch (ParseException ignore) { + // Bad format... + } + } + + return document; + } + + @Override + protected IIOMetadataNode getStandardTextNode() { + IIOMetadataNode text = new IIOMetadataNode("Text"); + + // DocumentName, ImageDescription, Make, Model, PageName, Software, Artist, HostComputer, InkNames, Copyright: + // /Text/TextEntry@keyword = field name, /Text/TextEntry@value = field value. + addTextEntryIfPresent(text, TIFF.TAG_DOCUMENT_NAME); + addTextEntryIfPresent(text, TIFF.TAG_IMAGE_DESCRIPTION); + addTextEntryIfPresent(text, TIFF.TAG_MAKE); + addTextEntryIfPresent(text, TIFF.TAG_MODEL); + addTextEntryIfPresent(text, TIFF.TAG_SOFTWARE); + addTextEntryIfPresent(text, TIFF.TAG_ARTIST); + addTextEntryIfPresent(text, TIFF.TAG_HOST_COMPUTER); + addTextEntryIfPresent(text, TIFF.TAG_INK_NAMES); + addTextEntryIfPresent(text, TIFF.TAG_COPYRIGHT); + + return text.hasChildNodes() ? text : null; + } + + private void addTextEntryIfPresent(final IIOMetadataNode text, final int tag) { + Entry entry = ifd.getEntryById(tag); + if (entry != null) { + IIOMetadataNode node = new IIOMetadataNode("TextEntry"); + text.appendChild(node); + node.setAttribute("keyword", entry.getFieldName()); + node.setAttribute("value", entry.getValueAsString()); + } + } + + @Override + protected IIOMetadataNode getStandardTileNode() { + // TODO! Woot?! This node is not documented in the DTD (although the page mentions a "tile" node)..? + // See http://docs.oracle.com/javase/7/docs/api/javax/imageio/metadata/doc-files/standard_metadata.html + // See http://stackoverflow.com/questions/30910719/javax-imageio-1-0-standard-plug-in-neutral-metadata-format-tiling-information + return super.getStandardTileNode(); + } +} 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 46769901..cd9a0564 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 @@ -243,6 +243,7 @@ public class TIFFImageReader extends ImageReaderBase { int bitsPerSample = getBitsPerSample(); int dataType = getDataType(sampleFormat, bitsPerSample); + // TODO: Validate CS using ColorSpaces.validateProfile // Read embedded cs ICC_Profile profile = getICCProfile(); ColorSpace cs; @@ -503,7 +504,7 @@ public class TIFFImageReader extends ImageReaderBase { readIFD(imageIndex); ImageTypeSpecifier rawType = getRawImageType(imageIndex); - Set specs = new LinkedHashSet(5); + Set specs = new LinkedHashSet<>(5); // TODO: Based on raw type, we can probably convert to most RGB types at least, maybe gray etc // TODO: Planar to chunky by default @@ -1354,6 +1355,7 @@ public class TIFFImageReader extends ImageReaderBase { private long[] getValueAsLongArray(final int tag, final String tagName, boolean required) throws IIOException { Entry entry = currentIFD.getEntryById(tag); + if (entry == null) { if (required) { throw new IIOException("Missing TIFF tag " + tagName); @@ -1413,6 +1415,21 @@ public class TIFFImageReader extends ImageReaderBase { // TODO: Thumbnail support + /// Metadata + + @Override + public IIOMetadata getImageMetadata(int imageIndex) throws IOException { + readIFD(imageIndex); + + return new TIFFImageMetadata(currentIFD); + } + + @Override + public IIOMetadata getStreamMetadata() throws IOException { + // TODO: + return super.getStreamMetadata(); + } + public static void main(final String[] args) throws IOException { ImageIO.setUseCache(false); @@ -1500,7 +1517,7 @@ public class TIFFImageReader extends ImageReaderBase { if (metadata.getNativeMetadataFormatName() != null) { new XMLSerializer(System.out, "UTF-8").serialize(metadata.getAsTree(metadata.getNativeMetadataFormatName()), false); } - else if (metadata.isStandardMetadataFormatSupported()) { + /*else*/ if (metadata.isStandardMetadataFormatSupported()) { new XMLSerializer(System.out, "UTF-8").serialize(metadata.getAsTree(IIOMetadataFormatImpl.standardMetadataFormatName), false); } } diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFProviderInfo.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFProviderInfo.java index 02f470d1..c57ea06a 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFProviderInfo.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFProviderInfo.java @@ -50,8 +50,8 @@ final class TIFFProviderInfo extends ReaderWriterProviderInfo { new String[] {"com.twelvemonkeys.imageio.plugins.tiff.TIFFImageReaderSpi"}, "com.twelvemonkeys.imageio.plugins.tiff.TIFFImageWriter", new String[] {"com.twelvemkonkeys.imageio.plugins.tif.TIFFImageWriterSpi"}, - false, null, null, null, null, - true, null, null, null, null + false, TIFFMedataFormat.SUN_NATIVE_STREAM_METADATA_FORMAT_NAME, "com.twelvemonkeys.imageio.plugins.tiff.TIFFImageMetadata", null, null, + true, TIFFMedataFormat.SUN_NATIVE_IMAGE_METADATA_FORMAT_NAME, "TODO", null, null ); } } From 1a43958aebc4b49efed11f4c7f132b633eb4d9c2 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Mon, 22 Jun 2015 11:15:44 +0200 Subject: [PATCH 056/182] TMI-139: Work in progress: TIFF image metadata. --- .../plugins/tiff/TIFFMedataFormat.java | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFMedataFormat.java diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFMedataFormat.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFMedataFormat.java new file mode 100644 index 00000000..617af229 --- /dev/null +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFMedataFormat.java @@ -0,0 +1,32 @@ +package com.twelvemonkeys.imageio.plugins.tiff; + +import javax.imageio.ImageTypeSpecifier; +import javax.imageio.metadata.IIOMetadataFormatImpl; + +/** + * TIFFMedataFormat. + * + * @author Harald Kuhr + * @author last modified by $Author: harald.kuhr$ + * @version $Id: TIFFMedataFormat.java,v 1.0 17/04/15 harald.kuhr Exp$ + */ +public final class TIFFMedataFormat extends IIOMetadataFormatImpl { + private static final TIFFMedataFormat INSTANCE = new TIFFMedataFormat(); + + // We'll reuse the metadata formats defined for JAI + public static final String SUN_NATIVE_IMAGE_METADATA_FORMAT_NAME = "com_sun_media_imageio_plugins_tiff_image_1.0"; + public static final String SUN_NATIVE_STREAM_METADATA_FORMAT_NAME = "com_sun_media_imageio_plugins_tiff_stream_1.0"; + + public TIFFMedataFormat() { + super(SUN_NATIVE_IMAGE_METADATA_FORMAT_NAME, CHILD_POLICY_SOME); + } + + @Override + public boolean canNodeAppear(String elementName, ImageTypeSpecifier imageType) { + return false; + } + + public static TIFFMedataFormat getInstance() { + return INSTANCE; + } +} From a2042e75bf46a0337a90da177eb5507b3680eb61 Mon Sep 17 00:00:00 2001 From: Schmidor Date: Wed, 1 Jul 2015 01:10:56 +0200 Subject: [PATCH 057/182] CITT Group 3/4 Support - Pass Mode / 2D Change referencing in work --- .../imageio/metadata/exif/TIFF.java | 3 + .../plugins/tiff/CCITTFaxDecoderStream.java | 893 +++++++++++------- .../imageio/plugins/tiff/TIFFExtension.java | 6 +- .../imageio/plugins/tiff/TIFFImageReader.java | 14 +- .../tiff/CCITTFaxDecoderStreamTest.java | 219 +++-- 5 files changed, 687 insertions(+), 448 deletions(-) diff --git a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/TIFF.java b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/TIFF.java index e7215b1f..606b0849 100644 --- a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/TIFF.java +++ b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/TIFF.java @@ -139,6 +139,9 @@ public interface TIFF { // "Old-style" JPEG (still used as EXIF thumbnail) int TAG_JPEG_INTERCHANGE_FORMAT = 513; int TAG_JPEG_INTERCHANGE_FORMAT_LENGTH = 514; + + int TAG_GROUP3OPTIONS = 292; + int TAG_GROUP4OPTIONS = 293; /// C. Tags relating to image data characteristics diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxDecoderStream.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxDecoderStream.java index 929cc8da..5eb9479c 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxDecoderStream.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxDecoderStream.java @@ -28,426 +28,623 @@ package com.twelvemonkeys.imageio.plugins.tiff; -import com.twelvemonkeys.lang.Validate; - import java.io.EOFException; import java.io.FilterInputStream; import java.io.IOException; import java.io.InputStream; +import com.twelvemonkeys.lang.Validate; + /** - * CCITT Modified Huffman RLE. - * + * CCITT Modified Huffman RLE, Group 3 (T4) and Group 4 (T6) fax compression. + * * @author Harald Kuhr * @author last modified by $Author: haraldk$ * @version $Id: CCITTFaxDecoderStream.java,v 1.0 23.05.12 15:55 haraldk Exp$ */ final class CCITTFaxDecoderStream extends FilterInputStream { - // See TIFF 6.0 Specification, Section 10: "Modified Huffman Compression", page 43. + // See TIFF 6.0 Specification, Section 10: "Modified Huffman Compression", + // page 43. - private final int columns; - private final byte[] decodedRow; + private final int columns; + private final byte[] decodedRow; - private int decodedLength; - private int decodedPos; + private int decodedLength; + private int decodedPos; - private int bitBuffer; - private int bitBufferLength; + // Need to take fill order into account (?) (use flip table?) + private final int fillOrder; + private final int type; - // Need to take fill order into account (?) (use flip table?) - private final int fillOrder; - private final int type; + private final int[] changesReferenceRow; + private final int[] changesCurrentRow; + private int changesReferenceRowCount; + private int changesCurrentRowCount; - private final int[] changes; - private int changesCount; + private static final int EOL_CODE = 0x01; // 12 bit - private static final int EOL_CODE = 0x01; // 12 bit + private boolean optionG32D = false; - public CCITTFaxDecoderStream(final InputStream stream, final int columns, final int type, final int fillOrder) { - super(Validate.notNull(stream, "stream")); + @SuppressWarnings("unused") // Leading zeros for aligning EOL + private boolean optionG3Fill = false; - this.columns = Validate.isTrue(columns > 0, columns, "width must be greater than 0"); - // We know this is only used for b/w (1 bit) - this.decodedRow = new byte[(columns + 7) / 8]; - this.type = Validate.isTrue(type == TIFFBaseline.COMPRESSION_CCITT_MODIFIED_HUFFMAN_RLE, type, "Only CCITT Modified Huffman RLE compression (2) supported: %s"); // TODO: Implement group 3 and 4 - this.fillOrder = Validate.isTrue(fillOrder == 1, fillOrder, "Only fill order 1 supported: %s"); // TODO: Implement fillOrder == 2 + private boolean optionUncompressed = false; - this.changes = new int[columns]; - } + public CCITTFaxDecoderStream(final InputStream stream, final int columns, final int type, final int fillOrder, + final long options) { + super(Validate.notNull(stream, "stream")); - // IDEA: Would it be faster to keep all bit combos of each length (>=2) that is NOT a code, to find bit length, then look up value in table? - // -- If white run, start at 4 bits to determine length, if black, start at 2 bits + this.columns = Validate.isTrue(columns > 0, columns, "width must be greater than 0"); + // We know this is only used for b/w (1 bit) + this.decodedRow = new byte[(columns + 7) / 8]; + this.type = type; + this.fillOrder = fillOrder;// Validate.isTrue(fillOrder == 1, fillOrder, + // "Only fill order 1 supported: %s"); // + // TODO: Implement fillOrder == 2 - private void fetch() throws IOException { - if (decodedPos >= decodedLength) { - decodedLength = 0; + this.changesReferenceRow = new int[columns]; + this.changesCurrentRow = new int[columns]; - try { - decodeRow(); - } - catch (EOFException e) { - // TODO: Rewrite to avoid throw/catch for normal flow... - if (decodedLength != 0) { - throw e; - } + switch (type) { + case TIFFExtension.COMPRESSION_CCITT_T4: + optionG32D = (options & TIFFExtension.GROUP3OPT_2DENCODING) != 0; + optionG3Fill = (options & TIFFExtension.GROUP3OPT_FILLBITS) != 0; + optionUncompressed = (options & TIFFExtension.GROUP3OPT_UNCOMPRESSED) != 0; + break; + case TIFFExtension.COMPRESSION_CCITT_T6: + optionUncompressed = (options & TIFFExtension.GROUP4OPT_UNCOMPRESSED) != 0; + break; + } - // ..otherwise, just client code trying to read past the end of stream - decodedLength = -1; - } + Validate.isTrue(!optionUncompressed, optionUncompressed, + "CCITT GROUP 3/4 OPTION UNCOMPRESSED is not supported"); + } - decodedPos = 0; - } - } + private void fetch() throws IOException { + if (decodedPos >= decodedLength) { + decodedLength = 0; - private void decodeRow() throws IOException { - resetBuffer(); + try { + decodeRow(); + } catch (EOFException e) { + // TODO: Rewrite to avoid throw/catch for normal flow... + if (decodedLength != 0) { + throw e; + } - boolean literalRun = true; + // ..otherwise, just client code trying to read past the end of + // stream + decodedLength = -1; + } - /* - if (type == TIFFExtension.COMPRESSION_CCITT_T4) { - int eol = readBits(12); - System.err.println("eol: " + eol); - while (eol != EOL_CODE) { - eol = readBits(1); - System.err.println("eol: " + eol); -// throw new IOException("Missing EOL"); - } + decodedPos = 0; + } + } - literalRun = readBits(1) == 1; - } + private void decode1D() throws IOException { + int index = 0; + boolean white = true; + changesCurrentRowCount = 0; + do { + int completeRun = 0; + if (white) { + completeRun = decodeRun(whiteRunTree); + } else { + completeRun = decodeRun(blackRunTree); + } - System.err.println("literalRun: " + literalRun); - */ - int index = 0; + index += completeRun; + changesCurrentRow[changesCurrentRowCount++] = index; + // Flip color for next run + white = !white; + } while (index < columns); + } - if (literalRun) { - changesCount = 0; - boolean white = true; + private void decode2D() throws IOException { + boolean white = true; + int index = 0; + changesCurrentRowCount = 0; + int ref = 0; + mode: while (index < columns) { + // read mode + N n = codeTree.root; + while (true) { + n = n.walk(readBit()); + if (n == null) { + continue mode; + } else if (n.isLeaf) { + switch (n.value) { + case VALUE_HMODE: + System.out.print("|H="); + int runLength = 0; + runLength = decodeRun(white ? whiteRunTree : blackRunTree); + changesCurrentRow[changesCurrentRowCount++] = index; + index += runLength; + System.out.print(runLength + (white? "W" : "B")); + runLength = decodeRun(white ? blackRunTree : whiteRunTree); + changesCurrentRow[changesCurrentRowCount++] = index; + index += runLength; + System.out.print(runLength + (!white? "W" : "B")); + break; + case VALUE_PASSMODE: + System.out.print("|P"); + ref++; + // TODO + break; + default: + System.out.print("|V" + n.value); + index = changesReferenceRow[ref] + n.value; + changesCurrentRow[ref] = index; + if(changesCurrentRow[ref] <= index) ref++; //TODO + changesCurrentRowCount++; + white = !white; + break; + } + continue mode; + } + } + } + } - do { - int completeRun = 0; + private void decodeRowType2() throws IOException { + resetBuffer(); + decode1D(); + } - int run; - do { - if (white) { - run = decodeRun(WHITE_CODES, WHITE_RUN_LENGTHS, 4); - } - else { - run = decodeRun(BLACK_CODES, BLACK_RUN_LENGTHS, 2); - } + private void decodeRowType4() throws IOException { + eof: while (true) { + // read till next EOL code + N n = eolOnlyTree.root; + while (true) { + N tmp = n; + n = n.walk(readBit()); + if (n == null) + continue eof; + if (n.isLeaf) { + System.out.print("|EOL"); + break eof; + } + if(tmp == n) System.out.print("F"); + } + } + boolean k = optionG32D ? readBit() : true; + System.out.print("|k=" + k); + if (k) { + decode1D(); + changesReferenceRowCount = changesCurrentRowCount; + System.arraycopy(changesCurrentRow, 0, changesReferenceRow, 0, changesCurrentRowCount); + } else { + decode2D(); + } + } - completeRun += run; - } - while (run >= 64); // Additional makeup codes are packed into both b/w codes, terminating codes are < 64 bytes + private void decodeRowType6() throws IOException { + changesReferenceRowCount = 1; + changesReferenceRow[0] = columns; + decode2D(); + } - changes[changesCount++] = index + completeRun; + private void decodeRow() throws IOException { + switch (type) { + case TIFFBaseline.COMPRESSION_CCITT_MODIFIED_HUFFMAN_RLE: + decodeRowType2(); + break; + case TIFFExtension.COMPRESSION_CCITT_T4: + decodeRowType4(); + break; + case TIFFExtension.COMPRESSION_CCITT_T6: + decodeRowType6(); + break; + } + int index = 0; + boolean white = true; + for (int i = 0; i <= changesCurrentRowCount; i++) { + int nextChange = columns; + if (i != changesCurrentRowCount) { + nextChange = changesCurrentRow[i]; + } -// System.err.printf("%s run: %d\n", white ? "white" : "black", run); + while (index % 8 != 0 && (nextChange - index) > 0) { + decodedRow[index++ / 8] |= (white ? 1 << 8 - (index % 8) : 0); + } - // TODO: Optimize with lookup for 0-7 bits? - // Fill bits to byte boundary... - while (index % 8 != 0 && completeRun-- > 0) { - decodedRow[index++ / 8] |= (white ? 1 << 8 - (index % 8) : 0); - } + if (index % 8 == 0) { + final byte value = (byte) (white ? 0xff : 0x00); - // ...then fill complete bytes to either 0xff or 0x00... - if (index % 8 == 0) { - final byte value = (byte) (white ? 0xff : 0x00); + while ((nextChange - index) > 7) { + decodedRow[index / 8] = value; + index += 8; + } + } + while ((nextChange - index) > 0) { + if (index % 8 == 0) + decodedRow[(index + 1) / 8] = 0; - while (completeRun > 7) { - decodedRow[index / 8] = value; - completeRun -= 8; - index += 8; - } - } + decodedRow[index++ / 8] |= (white ? 1 << 8 - (index % 8) : 0); + } - // ...finally fill any remaining bits - while (completeRun-- > 0) { - decodedRow[index++ / 8] |= (white ? 1 << 8 - (index % 8) : 0); - } + white = !white; + } - // Flip color for next run - white = !white; - } - while (index < columns); - } - else { - // non-literal run - } + if (index != columns) { + throw new IOException("Sum of run-lengths does not equal scan line width: " + index + " > " + columns); + } - if (type == TIFFBaseline.COMPRESSION_CCITT_MODIFIED_HUFFMAN_RLE && index != columns) { - throw new IOException("Sum of run-lengths does not equal scan line width: " + index + " > " + columns); - } + decodedLength = (index + 7) / 8; + } - decodedLength = (index + 7) / 8; - } + private int decodeRun(Tree tree) throws IOException { + int total = 0; - private int decodeRun(short[][] codes, short[][] runLengths, int minCodeSize) throws IOException { - // TODO: Optimize... - // Looping and comparing is the most straight-forward, but probably not the most effective way... - int code = readBits(minCodeSize); + N n = tree.root; + while (true) { + boolean bit = readBit(); + n = n.walk(bit); + if (n == null) + throw new IOException("Unknown code in Huffman RLE stream"); - for (int bits = 0; bits < codes.length; bits++) { - short[] bitCodes = codes[bits]; + if (n.isLeaf) { + total += n.value; + if (n.value < 64) { + return total; + } else { + n = tree.root; + continue; + } + } + } + } - for (int i = 0; i < bitCodes.length; i++) { - if (bitCodes[i] == code) { -// System.err.println("code: " + code); + private void resetBuffer() { + for (int i = 0; i < decodedRow.length; i++) { + decodedRow[i] = 0; + } + while (true) { + if (bufferPos == -1) { + return; + } - // Code found, return matching run length - return runLengths[bits][i]; - } - } + try { + boolean skip = readBit(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + } - // No code found, read one more bit and try again - code = fillOrder == 1 ? (code << 1) | readBits(1) : readBits(1) << (bits + minCodeSize) | code; - } + int buffer = -1; + int bufferPos = -1; - throw new IOException("Unknown code in Huffman RLE stream"); - } + private boolean readBit() throws IOException { + if (bufferPos < 0 || bufferPos > 7) { + buffer = in.read(); + if (buffer == -1) { + throw new EOFException("Unexpected end of Huffman RLE stream"); + } + bufferPos = 0; + } - private void resetBuffer() { - for (int i = 0; i < decodedRow.length; i++) { - decodedRow[i] = 0; - } + boolean isSet = ((buffer >> (7 - bufferPos)) & 1) == 1; + bufferPos++; + if (bufferPos > 7) + bufferPos = -1; + return isSet; + } - bitBuffer = 0; - bitBufferLength = 0; - } + @Override + public int read() throws IOException { + if (decodedLength < 0) { + return -1; + } - private int readBits(int bitCount) throws IOException { - while (bitBufferLength < bitCount) { - int read = in.read(); - if (read == -1) { - throw new EOFException("Unexpected end of Huffman RLE stream"); - } + if (decodedPos >= decodedLength) { + fetch(); - int bits = read & 0xff; - bitBuffer = (bitBuffer << 8) | bits; - bitBufferLength += 8; - } + if (decodedLength < 0) { + return -1; + } + } - // TODO: Take fill order into account - bitBufferLength -= bitCount; - int result = bitBuffer >> bitBufferLength; - bitBuffer &= (1 << bitBufferLength) - 1; + return decodedRow[decodedPos++] & 0xff; + } - return result; - } + @Override + public int read(byte[] b, int off, int len) throws IOException { + if (decodedLength < 0) { + return -1; + } - @Override - public int read() throws IOException { - if (decodedLength < 0) { - return -1; - } + if (decodedPos >= decodedLength) { + fetch(); - if (decodedPos >= decodedLength) { - fetch(); + if (decodedLength < 0) { + return -1; + } + } - if (decodedLength < 0) { - return -1; - } - } + int read = Math.min(decodedLength - decodedPos, len); + System.arraycopy(decodedRow, decodedPos, b, off, read); + decodedPos += read; - return decodedRow[decodedPos++] & 0xff; - } + return read; + } - @Override - public int read(byte[] b, int off, int len) throws IOException { - if (decodedLength < 0) { - return -1; - } + @Override + public long skip(long n) throws IOException { + if (decodedLength < 0) { + return -1; + } - if (decodedPos >= decodedLength) { - fetch(); + if (decodedPos >= decodedLength) { + fetch(); - if (decodedLength < 0) { - return -1; - } - } + if (decodedLength < 0) { + return -1; + } + } - int read = Math.min(decodedLength - decodedPos, len); - System.arraycopy(decodedRow, decodedPos, b, off, read); - decodedPos += read; + int skipped = (int) Math.min(decodedLength - decodedPos, n); + decodedPos += skipped; - return read; - } + return skipped; + } - @Override - public long skip(long n) throws IOException { - if (decodedLength < 0) { - return -1; - } + @Override + public boolean markSupported() { + return false; + } - if (decodedPos >= decodedLength) { - fetch(); + @Override + public synchronized void reset() throws IOException { + throw new IOException("mark/reset not supported"); + } - if (decodedLength < 0) { - return -1; - } - } + static class N { + N left; + N right; - int skipped = (int) Math.min(decodedLength - decodedPos, n); - decodedPos += skipped; + int value; // > 63 non term. + boolean canBeFill = false; + boolean isLeaf = false; - return skipped; - } + void set(boolean next, N node) { + if (!next) { + left = node; + } else { + right = node; + } + } - @Override - public boolean markSupported() { - return false; - } + N walk(boolean next) { + return next ? right : left; + } - @Override - public synchronized void reset() throws IOException { - throw new IOException("mark/reset not supported"); - } + @Override + public String toString() { + return "[leaf=" + isLeaf + ", value=" + value + ", canBeFill=" + canBeFill + "]"; + } + } - static final short[][] BLACK_CODES = { - { // 2 bits - 0x2, 0x3, - }, - { // 3 bits - 0x2, 0x3, - }, - { // 4 bits - 0x2, 0x3, - }, - { // 5 bits - 0x3, - }, - { // 6 bits - 0x4, 0x5, - }, - { // 7 bits - 0x4, 0x5, 0x7, - }, - { // 8 bits - 0x4, 0x7, - }, - { // 9 bits - 0x18, - }, - { // 10 bits - 0x17, 0x18, 0x37, 0x8, 0xf, - }, - { // 11 bits - 0x17, 0x18, 0x28, 0x37, 0x67, 0x68, 0x6c, 0x8, 0xc, 0xd, - }, - { // 12 bits - 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x1c, 0x1d, 0x1e, 0x1f, 0x24, 0x27, 0x28, 0x2b, 0x2c, 0x33, - 0x34, 0x35, 0x37, 0x38, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x64, 0x65, - 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xd2, 0xd3, - 0xd4, 0xd5, 0xd6, 0xd7, 0xda, 0xdb, - }, - { // 13 bits - 0x4a, 0x4b, 0x4c, 0x4d, 0x52, 0x53, 0x54, 0x55, 0x5a, 0x5b, 0x64, 0x65, 0x6c, 0x6d, 0x72, 0x73, - 0x74, 0x75, 0x76, 0x77, - } - }; - static final short[][] BLACK_RUN_LENGTHS = { - { // 2 bits - 3, 2, - }, - { // 3 bits - 1, 4, - }, - { // 4 bits - 6, 5, - }, - { // 5 bits - 7, - }, - { // 6 bits - 9, 8, - }, - { // 7 bits - 10, 11, 12, - }, - { // 8 bits - 13, 14, - }, - { // 9 bits - 15, - }, - { // 10 bits - 16, 17, 0, 18, 64, - }, - { // 11 bits - 24, 25, 23, 22, 19, 20, 21, 1792, 1856, 1920, - }, - { // 12 bits - 1984, 2048, 2112, 2176, 2240, 2304, 2368, 2432, 2496, 2560, 52, 55, 56, 59, 60, 320, - 384, 448, 53, 54, 50, 51, 44, 45, 46, 47, 57, 58, 61, 256, 48, 49, - 62, 63, 30, 31, 32, 33, 40, 41, 128, 192, 26, 27, 28, 29, 34, 35, - 36, 37, 38, 39, 42, 43, - }, - { // 13 bits - 640, 704, 768, 832, 1280, 1344, 1408, 1472, 1536, 1600, 1664, 1728, 512, 576, 896, 960, - 1024, 1088, 1152, 1216, - } - }; + static class Tree { + N root = new N(); - public static final short[][] WHITE_CODES = { - { // 4 bits - 0x7, 0x8, 0xb, 0xc, 0xe, 0xf, - }, - { // 5 bits - 0x12, 0x13, 0x14, 0x1b, 0x7, 0x8, - }, - { // 6 bits - 0x17, 0x18, 0x2a, 0x2b, 0x3, 0x34, 0x35, 0x7, 0x8, - }, - { // 7 bits - 0x13, 0x17, 0x18, 0x24, 0x27, 0x28, 0x2b, 0x3, 0x37, 0x4, 0x8, 0xc, - }, - { // 8 bits - 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x1a, 0x1b, 0x2, 0x24, 0x25, 0x28, 0x29, 0x2a, 0x2b, 0x2c, - 0x2d, 0x3, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x4, 0x4a, 0x4b, 0x5, 0x52, 0x53, 0x54, 0x55, - 0x58, 0x59, 0x5a, 0x5b, 0x64, 0x65, 0x67, 0x68, 0xa, 0xb, - }, - { // 9 bits - 0x98, 0x99, 0x9a, 0x9b, 0xcc, 0xcd, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, - }, - { // 10 bits - }, - { // 11 bits - 0x8, 0xc, 0xd, - }, - { // 12 bits - 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x1c, 0x1d, 0x1e, 0x1f, - } - }; + void fill(int depth, int path, int value) throws IOException { + N current = root; + for (int i = 0; i < depth; i++) { + int bitPos = depth - 1 - i; + boolean isSet = ((path >> bitPos) & 1) == 1; + N next = current.walk(isSet); + if (next == null) { + next = new N(); + if (i == depth - 1) { + next.value = value; + next.isLeaf = true; + } + if (path == 0) + next.canBeFill = true; + current.set(isSet, next); + } else { + if (next.isLeaf) + throw new IOException("node is leaf, no other following"); + } + current = next; + } + } - public static final short[][] WHITE_RUN_LENGTHS = { - { // 4 bits - 2, 3, 4, 5, 6, 7, - }, - { // 5 bits - 128, 8, 9, 64, 10, 11, - }, - { // 6 bits - 192, 1664, 16, 17, 13, 14, 15, 1, 12, - }, - { // 7 bits - 26, 21, 28, 27, 18, 24, 25, 22, 256, 23, 20, 19, - }, - { // 8 bits - 33, 34, 35, 36, 37, 38, 31, 32, 29, 53, 54, 39, 40, 41, 42, 43, - 44, 30, 61, 62, 63, 0, 320, 384, 45, 59, 60, 46, 49, 50, 51, - 52, 55, 56, 57, 58, 448, 512, 640, 576, 47, 48, - }, - { // 9 bits - 1472, 1536, 1600, 1728, 704, 768, 832, 896, 960, 1024, 1088, 1152, 1216, 1280, 1344, 1408, - }, - { // 10 bits - }, - { // 11 bits - 1792, 1856, 1920, - }, - { // 12 bits - 1984, 2048, 2112, 2176, 2240, 2304, 2368, 2432, 2496, 2560, - } - }; + void fill(int depth, int path, N node) throws IOException { + N current = root; + for (int i = 0; i < depth; i++) { + int bitPos = depth - 1 - i; + boolean isSet = ((path >> bitPos) & 1) == 1; + N next = current.walk(isSet); + if (next == null) { + if (i == depth - 1) { + next = node; + } else { + next = new N(); + } + if (path == 0) + next.canBeFill = true; + current.set(isSet, next); + } else { + if (next.isLeaf) + throw new IOException("node is leaf, no other following"); + } + current = next; + } + } + } + + static final short[][] BLACK_CODES = { + { // 2 bits + 0x2, 0x3, }, + { // 3 bits + 0x2, 0x3, }, + { // 4 bits + 0x2, 0x3, }, + { // 5 bits + 0x3, }, + { // 6 bits + 0x4, 0x5, }, + { // 7 bits + 0x4, 0x5, 0x7, }, + { // 8 bits + 0x4, 0x7, }, + { // 9 bits + 0x18, }, + { // 10 bits + 0x17, 0x18, 0x37, 0x8, 0xf, }, + { // 11 bits + 0x17, 0x18, 0x28, 0x37, 0x67, 0x68, 0x6c, 0x8, 0xc, 0xd, }, + { // 12 bits + 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x1c, 0x1d, 0x1e, 0x1f, 0x24, 0x27, 0x28, 0x2b, 0x2c, 0x33, + 0x34, 0x35, 0x37, 0x38, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x64, 0x65, + 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xd2, 0xd3, + 0xd4, 0xd5, 0xd6, 0xd7, 0xda, 0xdb, }, + { // 13 bits + 0x4a, 0x4b, 0x4c, 0x4d, 0x52, 0x53, 0x54, 0x55, 0x5a, 0x5b, 0x64, 0x65, 0x6c, 0x6d, 0x72, 0x73, + 0x74, 0x75, 0x76, 0x77, } }; + static final short[][] BLACK_RUN_LENGTHS = { + { // 2 bits + 3, 2, }, + { // 3 bits + 1, 4, }, + { // 4 bits + 6, 5, }, + { // 5 bits + 7, }, + { // 6 bits + 9, 8, }, + { // 7 bits + 10, 11, 12, }, + { // 8 bits + 13, 14, }, + { // 9 bits + 15, }, + { // 10 bits + 16, 17, 0, 18, 64, }, + { // 11 bits + 24, 25, 23, 22, 19, 20, 21, 1792, 1856, 1920, }, + { // 12 bits + 1984, 2048, 2112, 2176, 2240, 2304, 2368, 2432, 2496, 2560, 52, 55, 56, 59, 60, 320, 384, 448, 53, + 54, 50, 51, 44, 45, 46, 47, 57, 58, 61, 256, 48, 49, 62, 63, 30, 31, 32, 33, 40, 41, 128, 192, 26, + 27, 28, 29, 34, 35, 36, 37, 38, 39, 42, 43, }, + { // 13 bits + 640, 704, 768, 832, 1280, 1344, 1408, 1472, 1536, 1600, 1664, 1728, 512, 576, 896, 960, 1024, 1088, + 1152, 1216, } }; + + public static final short[][] WHITE_CODES = { + { // 4 bits + 0x7, 0x8, 0xb, 0xc, 0xe, 0xf, }, + { // 5 bits + 0x12, 0x13, 0x14, 0x1b, 0x7, 0x8, }, + { // 6 bits + 0x17, 0x18, 0x2a, 0x2b, 0x3, 0x34, 0x35, 0x7, 0x8, }, + { // 7 bits + 0x13, 0x17, 0x18, 0x24, 0x27, 0x28, 0x2b, 0x3, 0x37, 0x4, 0x8, 0xc, }, + { // 8 bits + 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x1a, 0x1b, 0x2, 0x24, 0x25, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, + 0x3, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x4, 0x4a, 0x4b, 0x5, 0x52, 0x53, 0x54, 0x55, 0x58, 0x59, + 0x5a, 0x5b, 0x64, 0x65, 0x67, 0x68, 0xa, 0xb, }, + { // 9 bits + 0x98, 0x99, 0x9a, 0x9b, 0xcc, 0xcd, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, }, + { // 10 bits + }, + { // 11 bits + 0x8, 0xc, 0xd, }, + { // 12 bits + 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x1c, 0x1d, 0x1e, 0x1f, } }; + + public static final short[][] WHITE_RUN_LENGTHS = { + { // 4 bits + 2, 3, 4, 5, 6, 7, }, + { // 5 bits + 128, 8, 9, 64, 10, 11, }, + { // 6 bits + 192, 1664, 16, 17, 13, 14, 15, 1, 12, }, + { // 7 bits + 26, 21, 28, 27, 18, 24, 25, 22, 256, 23, 20, 19, }, + { // 8 bits + 33, 34, 35, 36, 37, 38, 31, 32, 29, 53, 54, 39, 40, 41, 42, 43, 44, 30, 61, 62, 63, 0, 320, 384, 45, + 59, 60, 46, 49, 50, 51, 52, 55, 56, 57, 58, 448, 512, 640, 576, 47, 48, }, + { // 9 + // bits + 1472, 1536, 1600, 1728, 704, 768, 832, 896, 960, 1024, 1088, 1152, 1216, 1280, 1344, 1408, }, + { // 10 bits + }, + { // 11 bits + 1792, 1856, 1920, }, + { // 12 bits + 1984, 2048, 2112, 2176, 2240, 2304, 2368, 2432, 2496, 2560, } }; + + final static N EOL; + final static N FILL; + final static Tree blackRunTree; + final static Tree whiteRunTree; + final static Tree eolOnlyTree; + final static Tree codeTree; + + final static int VALUE_EOL = -2000; + final static int VALUE_FILL = -1000; + final static int VALUE_PASSMODE = -3000; + final static int VALUE_HMODE = -4000; + + static { + EOL = new N(); + EOL.isLeaf = true; + EOL.value = VALUE_EOL; + FILL = new N(); + FILL.value = VALUE_FILL; + FILL.left = FILL; + FILL.right = EOL; + + eolOnlyTree = new Tree(); + try { + eolOnlyTree.fill(12, 0, FILL); + eolOnlyTree.fill(12, 1, EOL); + } catch (Exception e) { + e.printStackTrace(); + } + + blackRunTree = new Tree(); + try { + for (int i = 0; i < BLACK_CODES.length; i++) { + for (int j = 0; j < BLACK_CODES[i].length; j++) { + blackRunTree.fill(i + 2, BLACK_CODES[i][j], BLACK_RUN_LENGTHS[i][j]); + } + } + blackRunTree.fill(12, 0, FILL); + blackRunTree.fill(12, 1, EOL); + } catch (Exception e) { + e.printStackTrace(); + } + whiteRunTree = new Tree(); + try { + for (int i = 0; i < WHITE_CODES.length; i++) { + for (int j = 0; j < WHITE_CODES[i].length; j++) { + whiteRunTree.fill(i + 4, WHITE_CODES[i][j], WHITE_RUN_LENGTHS[i][j]); + } + } + whiteRunTree.fill(12, 0, FILL); + whiteRunTree.fill(12, 1, EOL); + } catch (Exception e) { + e.printStackTrace(); + } + + codeTree = new Tree(); + try { + codeTree.fill(4, 1, VALUE_PASSMODE); // pass mode + codeTree.fill(3, 1, VALUE_HMODE); // H mode + codeTree.fill(1, 1, 0); // V(0) + codeTree.fill(3, 3, 1); // V_R(1) + codeTree.fill(6, 3, 2); // V_R(2) + codeTree.fill(7, 3, 3); // V_R(3) + codeTree.fill(3, 2, -1); // V_L(1) + codeTree.fill(6, 2, -2); // V_L(2) + codeTree.fill(7, 2, -3); // V_L(3) + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFExtension.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFExtension.java index 994ffd4f..ca849a74 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFExtension.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFExtension.java @@ -91,5 +91,9 @@ interface TIFFExtension { int ORIENTATION_RIGHTTOP = 6; int ORIENTATION_RIGHTBOT = 7; int ORIENTATION_LEFTBOT = 8; - + + int GROUP3OPT_2DENCODING = 1; + int GROUP3OPT_UNCOMPRESSED = 2; + int GROUP3OPT_FILLBITS = 4; + int GROUP4OPT_UNCOMPRESSED = 2; } 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 cd9a0564..b5052f3e 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 @@ -604,9 +604,9 @@ public class TIFFImageReader extends ImageReaderBase { case TIFFBaseline.COMPRESSION_CCITT_MODIFIED_HUFFMAN_RLE: // CCITT modified Huffman // Additionally, the specification defines these values as part of the TIFF extensions: -// case TIFFExtension.COMPRESSION_CCITT_T4: + case TIFFExtension.COMPRESSION_CCITT_T4: // CCITT Group 3 fax encoding -// case TIFFExtension.COMPRESSION_CCITT_T6: + case TIFFExtension.COMPRESSION_CCITT_T6: // CCITT Group 4 fax encoding int[] yCbCrSubsampling = null; @@ -1028,10 +1028,6 @@ public class TIFFImageReader extends ImageReaderBase { break; // Additionally, the specification defines these values as part of the TIFF extensions: - case TIFFExtension.COMPRESSION_CCITT_T4: - // CCITT Group 3 fax encoding - case TIFFExtension.COMPRESSION_CCITT_T6: - // CCITT Group 4 fax encoding // Known, but unsupported compression types case TIFFCustom.COMPRESSION_NEXT: @@ -1320,7 +1316,7 @@ public class TIFFImageReader extends ImageReaderBase { } private InputStream createDecompressorStream(final int compression, final int width, final int bands, final InputStream stream) throws IOException { - switch (compression) { + switch (compression) { case TIFFBaseline.COMPRESSION_NONE: return stream; case TIFFBaseline.COMPRESSION_PACKBITS: @@ -1332,9 +1328,11 @@ public class TIFFImageReader extends ImageReaderBase { case TIFFExtension.COMPRESSION_DEFLATE: return new InflaterInputStream(stream, new Inflater(), 1024); case TIFFBaseline.COMPRESSION_CCITT_MODIFIED_HUFFMAN_RLE: + return new CCITTFaxDecoderStream(stream, width, compression, getValueAsIntWithDefault(TIFF.TAG_FILL_ORDER, 1),0L); case TIFFExtension.COMPRESSION_CCITT_T4: + return new CCITTFaxDecoderStream(stream, width, compression, getValueAsIntWithDefault(TIFF.TAG_FILL_ORDER, 1),getValueAsLongWithDefault(TIFF.TAG_GROUP3OPTIONS, 0L)); case TIFFExtension.COMPRESSION_CCITT_T6: - return new CCITTFaxDecoderStream(stream, width, compression, getValueAsIntWithDefault(TIFF.TAG_FILL_ORDER, 1)); + return new CCITTFaxDecoderStream(stream, width, compression, getValueAsIntWithDefault(TIFF.TAG_FILL_ORDER, 1),getValueAsLongWithDefault(TIFF.TAG_GROUP4OPTIONS, 0L)); default: throw new IllegalArgumentException("Unsupported TIFF compression: " + compression); } diff --git a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxDecoderStreamTest.java b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxDecoderStreamTest.java index 8c735d82..ce817631 100644 --- a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxDecoderStreamTest.java +++ b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxDecoderStreamTest.java @@ -45,122 +45,159 @@ import static org.junit.Assert.*; * * @author Harald Kuhr * @author last modified by $Author: haraldk$ - * @version $Id: CCITTFaxDecoderStreamTest.java,v 1.0 09.03.13 14:44 haraldk Exp$ + * @version $Id: CCITTFaxDecoderStreamTest.java,v 1.0 09.03.13 14:44 haraldk + * Exp$ */ public class CCITTFaxDecoderStreamTest { - // TODO: Better tests (full A4 width scan lines?) + static final byte[] DATA_G3_1D = { 0x00, 0x18, // 000000000001|1000| EOL|3W| + 0x4E, 0x00, // 010|0111|000000000 1B|2W|EOL + 0x30, (byte) 0x9C, // 001|1000|010|0111|00 |3W|1B|2W|EOL + 0x00, 0x61, // 0000000001|1000|01 |3W|1B + 0x38, 0x00, // 0|0111|00000000000 |2W|EOL + (byte) 0xBE, (byte) 0xE0 }; // 1|0111|11|0111|00000 |2W|2B|2W|5F - // From http://www.mikekohn.net/file_formats/tiff.php - static final byte[] DATA_TYPE_2 = { - (byte) 0x84, (byte) 0xe0, // 10000100 11100000 - (byte) 0x84, (byte) 0xe0, // 10000100 11100000 - (byte) 0x84, (byte) 0xe0, // 10000100 11100000 - (byte) 0x7d, (byte) 0xc0, // 01111101 11000000 - }; + static final byte[] DATA_G3_1D_FILL = { 0x00, 0x01, (byte) 0x84, (byte) 0xE0, 0x01, (byte) 0x84, (byte) 0xE0, 0x01, + (byte) 0x84, (byte) 0xE0, 0x1, 0x7D, (byte) 0xC0 }; - static final byte[] DATA_TYPE_3 = { - 0x00, 0x01, (byte) 0xc2, 0x70, - 0x00, 0x01, 0x70, - 0x01, + static final byte[] DATA_G3_2D = { + 0x00, 0x1C, // 000000000001|1|100 EOL|1|3W + 0x27, 0x00, // 0|010|0111|00000000 |1B|2W|EOL + 0x17, 0x00, // 0001|0|1|1|1|00000000 |0|V|V|V|EOL + 0x1C, 0x27, // 0001|1|1000|010|0111| |1|3W|1B|2W| + 0x00, 0x12, // 000000000001|0|010| EOL|0|V-1| + (byte) 0xC0 }; // 1|1|000000 V|V|6F - }; + static final byte[] DATA_G3_2D_FILL = { 0x00, 0x01, (byte) 0xC2, 0x70, 0x01, 0x70, 0x01, (byte) 0xC2, 0x70, 0x01, + 0x2C }; - static final byte[] DATA_TYPE_4 = { - 0x26, (byte) 0xb0, 95, (byte) 0xfa, (byte) 0xc0 - }; + // EOF exception, not sure + static final byte[] DATA_G3_2D_lsb2msb = { 0x00, 0x38, (byte) 0xE4, 0x00, (byte) 0xE8, 0x00, 0x38, (byte) 0xE4, + 0x00, 0x48, 0x03 }; - // Image should be (6 x 4): - // 1 1 1 0 1 1 x x - // 1 1 1 0 1 1 x x - // 1 1 1 0 1 1 x x - // 1 1 0 0 1 1 x x - BufferedImage image; + static final byte[] DATA_G4 = { + 0x04, 0x17, // 0000 0100 0001 01|11 + (byte) 0xF5, (byte) 0x80, // 1|111| 0101 1000 0000 + 0x08, 0x00, // 0000 1000 0000 0000 + (byte) 0x80 }; // 1000 0000 + // Line 1: V-3, V-2, V0 + // Line 2: V0 V0 V0 + // Line 3: V0 V0 V0 + // Line 4: V-1, V0, V0 EOL EOL - @Before - public void init() { - image = new BufferedImage(6, 4, BufferedImage.TYPE_BYTE_BINARY); - for (int y = 0; y < 4; y++) { - for (int x = 0; x < 6; x++) { - image.setRGB(x, y, x == 3 ? 0xff000000 : 0xffffffff); - } - } + // TODO: Better tests (full A4 width scan lines?) - image.setRGB(2, 3, 0xff000000); - } + // From http://www.mikekohn.net/file_formats/tiff.php + static final byte[] DATA_TYPE_2 = { (byte) 0x84, (byte) 0xe0, // 10000100 + // 11100000 + (byte) 0x84, (byte) 0xe0, // 10000100 11100000 + (byte) 0x84, (byte) 0xe0, // 10000100 11100000 + (byte) 0x7d, (byte) 0xc0, // 01111101 11000000 + }; - @Test - public void testReadCountType2() throws IOException { - InputStream stream = new CCITTFaxDecoderStream(new ByteArrayInputStream(DATA_TYPE_2), 6, TIFFBaseline.COMPRESSION_CCITT_MODIFIED_HUFFMAN_RLE, 1); + static final byte[] DATA_TYPE_3 = { 0x00, 0x01, (byte) 0xc2, 0x70, // 00000000 + // 00000001 + // 11000010 + // 01110000 + 0x00, 0x01, 0x78, // 00000000 00000001 01111000 + 0x00, 0x01, 0x78, // 00000000 00000001 01110000 + 0x00, 0x01, 0x56, // 00000000 00000001 01010110 + // 0x01, // 00000001 - int count = 0; - int read; - while ((read = stream.read()) >= 0) { - count++; - } + }; - // Just make sure we'll have 4 bytes - assertEquals(4, count); + // 001 00110101 10 000010 1 1 1 1 1 1 1 1 1 1 010 11 (000000 padding) + static final byte[] DATA_TYPE_4 = { 0x26, // 001 00110 + (byte) 0xb0, // 101 10 000 + 0x5f, // 010 1 1 1 1 1 + (byte) 0xfa, // 1 1 1 1 1 010 + (byte) 0xc0 // 11 (000000 padding) + }; - // Verify that we don't return arbitrary values - assertEquals(-1, read); - } + // Image should be (6 x 4): + // 1 1 1 0 1 1 x x + // 1 1 1 0 1 1 x x + // 1 1 1 0 1 1 x x + // 1 1 0 0 1 1 x x + BufferedImage image; - @Test - public void testDecodeType2() throws IOException { - InputStream stream = new CCITTFaxDecoderStream(new ByteArrayInputStream(DATA_TYPE_2), 6, TIFFBaseline.COMPRESSION_CCITT_MODIFIED_HUFFMAN_RLE, 1); + @Before + public void init() { + image = new BufferedImage(6, 4, BufferedImage.TYPE_BYTE_BINARY); + for (int y = 0; y < 4; y++) { + for (int x = 0; x < 6; x++) { + image.setRGB(x, y, x == 3 ? 0xff000000 : 0xffffffff); + } + } - byte[] imageData = ((DataBufferByte) image.getData().getDataBuffer()).getData(); - byte[] bytes = new byte[imageData.length]; - new DataInputStream(stream).readFully(bytes); + image.setRGB(2, 3, 0xff000000); + } -// JPanel panel = new JPanel(); -// panel.add(new JLabel("Expected", new BufferedImageIcon(image, 300, 300, true), JLabel.CENTER)); -// panel.add(new JLabel("Actual", new BufferedImageIcon(new BufferedImage(image.getColorModel(), Raster.createPackedRaster(new DataBufferByte(bytes, bytes.length), 6, 4, 1, null), false, null), 300, 300, true), JLabel.CENTER)); -// JOptionPane.showConfirmDialog(null, panel); + @Test + public void testDecodeType2() throws IOException { + InputStream stream = new CCITTFaxDecoderStream(new ByteArrayInputStream(DATA_TYPE_2), 6, + TIFFBaseline.COMPRESSION_CCITT_MODIFIED_HUFFMAN_RLE, 1, 0L); - assertArrayEquals(imageData, bytes); - } + byte[] imageData = ((DataBufferByte) image.getData().getDataBuffer()).getData(); + byte[] bytes = new byte[imageData.length]; + new DataInputStream(stream).readFully(bytes); + assertArrayEquals(imageData, bytes); + } - @Test(expected = IllegalArgumentException.class) - public void testDecodeType3() throws IOException { - InputStream stream = new CCITTFaxDecoderStream(new ByteArrayInputStream(DATA_TYPE_3), 6, TIFFExtension.COMPRESSION_CCITT_T4, 1); + @Test + public void testDecodeType3_1D() throws IOException { + InputStream stream = new CCITTFaxDecoderStream(new ByteArrayInputStream(DATA_G3_1D), 6, + TIFFExtension.COMPRESSION_CCITT_T4, 1, 0L); - byte[] imageData = ((DataBufferByte) image.getData().getDataBuffer()).getData(); - byte[] bytes = new byte[imageData.length]; - DataInputStream dataInput = new DataInputStream(stream); + byte[] imageData = ((DataBufferByte) image.getData().getDataBuffer()).getData(); + byte[] bytes = new byte[imageData.length]; + new DataInputStream(stream).readFully(bytes); + assertArrayEquals(imageData, bytes); + } - for (int y = 0; y < image.getHeight(); y++) { - System.err.println("y: " + y); - dataInput.readFully(bytes, y * image.getWidth(), image.getWidth()); - } + @Test + public void testDecodeType3_1D_FILL() throws IOException { + InputStream stream = new CCITTFaxDecoderStream(new ByteArrayInputStream(DATA_G3_1D_FILL), 6, + TIFFExtension.COMPRESSION_CCITT_T4, 1, TIFFExtension.GROUP3OPT_FILLBITS); -// JPanel panel = new JPanel(); -// panel.add(new JLabel("Expected", new BufferedImageIcon(image, 300, 300, true), JLabel.CENTER)); -// panel.add(new JLabel("Actual", new BufferedImageIcon(new BufferedImage(image.getColorModel(), Raster.createPackedRaster(new DataBufferByte(bytes, bytes.length), 6, 4, 1, null), false, null), 300, 300, true), JLabel.CENTER)); -// JOptionPane.showConfirmDialog(null, panel); + byte[] imageData = ((DataBufferByte) image.getData().getDataBuffer()).getData(); + byte[] bytes = new byte[imageData.length]; + new DataInputStream(stream).readFully(bytes); + assertArrayEquals(imageData, bytes); + } - assertArrayEquals(imageData, bytes); - } + @Test + public void testDecodeType3_2D() throws IOException { + InputStream stream = new CCITTFaxDecoderStream(new ByteArrayInputStream(DATA_G3_2D), 6, + TIFFExtension.COMPRESSION_CCITT_T4, 1, TIFFExtension.GROUP3OPT_2DENCODING); - @Test(expected = IllegalArgumentException.class) - public void testDecodeType4() throws IOException { - InputStream stream = new CCITTFaxDecoderStream(new ByteArrayInputStream(DATA_TYPE_4), 6, TIFFExtension.COMPRESSION_CCITT_T6, 1); + byte[] imageData = ((DataBufferByte) image.getData().getDataBuffer()).getData(); + byte[] bytes = new byte[imageData.length]; + new DataInputStream(stream).readFully(bytes); + assertArrayEquals(imageData, bytes); + } - byte[] imageData = ((DataBufferByte) image.getData().getDataBuffer()).getData(); - byte[] bytes = new byte[imageData.length]; - DataInputStream dataInput = new DataInputStream(stream); + @Test + public void testDecodeType3_2D_FILL() throws IOException { + InputStream stream = new CCITTFaxDecoderStream(new ByteArrayInputStream(DATA_G3_2D_FILL), 6, + TIFFExtension.COMPRESSION_CCITT_T4, 1, + TIFFExtension.GROUP3OPT_2DENCODING | TIFFExtension.GROUP3OPT_FILLBITS); - for (int y = 0; y < image.getHeight(); y++) { - System.err.println("y: " + y); - dataInput.readFully(bytes, y * image.getWidth(), image.getWidth()); - } + byte[] imageData = ((DataBufferByte) image.getData().getDataBuffer()).getData(); + byte[] bytes = new byte[imageData.length]; + new DataInputStream(stream).readFully(bytes); + assertArrayEquals(imageData, bytes); + } + + @Test + public void testDecodeType4() throws IOException { + InputStream stream = new CCITTFaxDecoderStream(new ByteArrayInputStream(DATA_G4), 6, + TIFFExtension.COMPRESSION_CCITT_T6, 1, + 0L); -// JPanel panel = new JPanel(); -// panel.add(new JLabel("Expected", new BufferedImageIcon(image, 300, 300, true), JLabel.CENTER)); -// panel.add(new JLabel("Actual", new BufferedImageIcon(new BufferedImage(image.getColorModel(), Raster.createPackedRaster(new DataBufferByte(bytes, bytes.length), 6, 4, 1, null), false, null), 300, 300, true), JLabel.CENTER)); -// JOptionPane.showConfirmDialog(null, panel); - - assertArrayEquals(imageData, bytes); - } + byte[] imageData = ((DataBufferByte) image.getData().getDataBuffer()).getData(); + byte[] bytes = new byte[imageData.length]; + new DataInputStream(stream).readFully(bytes); + assertArrayEquals(imageData, bytes); + } } From 2b22b0252348b617dad414d7084423f24116cf10 Mon Sep 17 00:00:00 2001 From: Schmidor Date: Thu, 2 Jul 2015 23:35:19 +0200 Subject: [PATCH 058/182] CITT Group 3/4 Support - some cleanup, group 3 /T.4 should work now --- .../plugins/tiff/CCITTFaxDecoderStream.java | 1229 +++++++++-------- .../imageio/plugins/tiff/TIFFExtension.java | 10 +- .../tiff/CCITTFaxDecoderStreamTest.java | 241 ++-- 3 files changed, 745 insertions(+), 735 deletions(-) diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxDecoderStream.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxDecoderStream.java index 5eb9479c..ae5eb26e 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxDecoderStream.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxDecoderStream.java @@ -43,608 +43,629 @@ import com.twelvemonkeys.lang.Validate; * @version $Id: CCITTFaxDecoderStream.java,v 1.0 23.05.12 15:55 haraldk Exp$ */ final class CCITTFaxDecoderStream extends FilterInputStream { - // See TIFF 6.0 Specification, Section 10: "Modified Huffman Compression", - // page 43. - - private final int columns; - private final byte[] decodedRow; - - private int decodedLength; - private int decodedPos; - - // Need to take fill order into account (?) (use flip table?) - private final int fillOrder; - private final int type; - - private final int[] changesReferenceRow; - private final int[] changesCurrentRow; - private int changesReferenceRowCount; - private int changesCurrentRowCount; - - private static final int EOL_CODE = 0x01; // 12 bit - - private boolean optionG32D = false; - - @SuppressWarnings("unused") // Leading zeros for aligning EOL - private boolean optionG3Fill = false; - - private boolean optionUncompressed = false; - - public CCITTFaxDecoderStream(final InputStream stream, final int columns, final int type, final int fillOrder, - final long options) { - super(Validate.notNull(stream, "stream")); - - this.columns = Validate.isTrue(columns > 0, columns, "width must be greater than 0"); - // We know this is only used for b/w (1 bit) - this.decodedRow = new byte[(columns + 7) / 8]; - this.type = type; - this.fillOrder = fillOrder;// Validate.isTrue(fillOrder == 1, fillOrder, - // "Only fill order 1 supported: %s"); // - // TODO: Implement fillOrder == 2 - - this.changesReferenceRow = new int[columns]; - this.changesCurrentRow = new int[columns]; - - switch (type) { - case TIFFExtension.COMPRESSION_CCITT_T4: - optionG32D = (options & TIFFExtension.GROUP3OPT_2DENCODING) != 0; - optionG3Fill = (options & TIFFExtension.GROUP3OPT_FILLBITS) != 0; - optionUncompressed = (options & TIFFExtension.GROUP3OPT_UNCOMPRESSED) != 0; - break; - case TIFFExtension.COMPRESSION_CCITT_T6: - optionUncompressed = (options & TIFFExtension.GROUP4OPT_UNCOMPRESSED) != 0; - break; - } - - Validate.isTrue(!optionUncompressed, optionUncompressed, - "CCITT GROUP 3/4 OPTION UNCOMPRESSED is not supported"); - } - - private void fetch() throws IOException { - if (decodedPos >= decodedLength) { - decodedLength = 0; - - try { - decodeRow(); - } catch (EOFException e) { - // TODO: Rewrite to avoid throw/catch for normal flow... - if (decodedLength != 0) { - throw e; - } - - // ..otherwise, just client code trying to read past the end of - // stream - decodedLength = -1; - } - - decodedPos = 0; - } - } - - private void decode1D() throws IOException { - int index = 0; - boolean white = true; - changesCurrentRowCount = 0; - do { - int completeRun = 0; - if (white) { - completeRun = decodeRun(whiteRunTree); - } else { - completeRun = decodeRun(blackRunTree); - } - - index += completeRun; - changesCurrentRow[changesCurrentRowCount++] = index; - // Flip color for next run - white = !white; - } while (index < columns); - } - - private void decode2D() throws IOException { - boolean white = true; - int index = 0; - changesCurrentRowCount = 0; - int ref = 0; - mode: while (index < columns) { - // read mode - N n = codeTree.root; - while (true) { - n = n.walk(readBit()); - if (n == null) { - continue mode; - } else if (n.isLeaf) { - switch (n.value) { - case VALUE_HMODE: - System.out.print("|H="); - int runLength = 0; - runLength = decodeRun(white ? whiteRunTree : blackRunTree); - changesCurrentRow[changesCurrentRowCount++] = index; - index += runLength; - System.out.print(runLength + (white? "W" : "B")); - runLength = decodeRun(white ? blackRunTree : whiteRunTree); - changesCurrentRow[changesCurrentRowCount++] = index; - index += runLength; - System.out.print(runLength + (!white? "W" : "B")); - break; - case VALUE_PASSMODE: - System.out.print("|P"); - ref++; - // TODO - break; - default: - System.out.print("|V" + n.value); - index = changesReferenceRow[ref] + n.value; - changesCurrentRow[ref] = index; - if(changesCurrentRow[ref] <= index) ref++; //TODO - changesCurrentRowCount++; - white = !white; - break; - } - continue mode; - } - } - } - } - - private void decodeRowType2() throws IOException { - resetBuffer(); - decode1D(); - } - - private void decodeRowType4() throws IOException { - eof: while (true) { - // read till next EOL code - N n = eolOnlyTree.root; - while (true) { - N tmp = n; - n = n.walk(readBit()); - if (n == null) - continue eof; - if (n.isLeaf) { - System.out.print("|EOL"); - break eof; - } - if(tmp == n) System.out.print("F"); - } - } - boolean k = optionG32D ? readBit() : true; - System.out.print("|k=" + k); - if (k) { - decode1D(); - changesReferenceRowCount = changesCurrentRowCount; - System.arraycopy(changesCurrentRow, 0, changesReferenceRow, 0, changesCurrentRowCount); - } else { - decode2D(); - } - } - - private void decodeRowType6() throws IOException { - changesReferenceRowCount = 1; - changesReferenceRow[0] = columns; - decode2D(); - } - - private void decodeRow() throws IOException { - switch (type) { - case TIFFBaseline.COMPRESSION_CCITT_MODIFIED_HUFFMAN_RLE: - decodeRowType2(); - break; - case TIFFExtension.COMPRESSION_CCITT_T4: - decodeRowType4(); - break; - case TIFFExtension.COMPRESSION_CCITT_T6: - decodeRowType6(); - break; - } - int index = 0; - boolean white = true; - for (int i = 0; i <= changesCurrentRowCount; i++) { - int nextChange = columns; - if (i != changesCurrentRowCount) { - nextChange = changesCurrentRow[i]; - } - - while (index % 8 != 0 && (nextChange - index) > 0) { - decodedRow[index++ / 8] |= (white ? 1 << 8 - (index % 8) : 0); - } - - if (index % 8 == 0) { - final byte value = (byte) (white ? 0xff : 0x00); - - while ((nextChange - index) > 7) { - decodedRow[index / 8] = value; - index += 8; - } - } - while ((nextChange - index) > 0) { - if (index % 8 == 0) - decodedRow[(index + 1) / 8] = 0; - - decodedRow[index++ / 8] |= (white ? 1 << 8 - (index % 8) : 0); - } - - white = !white; - } - - if (index != columns) { - throw new IOException("Sum of run-lengths does not equal scan line width: " + index + " > " + columns); - } - - decodedLength = (index + 7) / 8; - } - - private int decodeRun(Tree tree) throws IOException { - int total = 0; - - N n = tree.root; - while (true) { - boolean bit = readBit(); - n = n.walk(bit); - if (n == null) - throw new IOException("Unknown code in Huffman RLE stream"); - - if (n.isLeaf) { - total += n.value; - if (n.value < 64) { - return total; - } else { - n = tree.root; - continue; - } - } - } - } - - private void resetBuffer() { - for (int i = 0; i < decodedRow.length; i++) { - decodedRow[i] = 0; - } - while (true) { - if (bufferPos == -1) { - return; - } - - try { - boolean skip = readBit(); - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - } - - int buffer = -1; - int bufferPos = -1; - - private boolean readBit() throws IOException { - if (bufferPos < 0 || bufferPos > 7) { - buffer = in.read(); - if (buffer == -1) { - throw new EOFException("Unexpected end of Huffman RLE stream"); - } - bufferPos = 0; - } - - boolean isSet = ((buffer >> (7 - bufferPos)) & 1) == 1; - bufferPos++; - if (bufferPos > 7) - bufferPos = -1; - return isSet; - } - - @Override - public int read() throws IOException { - if (decodedLength < 0) { - return -1; - } - - if (decodedPos >= decodedLength) { - fetch(); - - if (decodedLength < 0) { - return -1; - } - } - - return decodedRow[decodedPos++] & 0xff; - } - - @Override - public int read(byte[] b, int off, int len) throws IOException { - if (decodedLength < 0) { - return -1; - } - - if (decodedPos >= decodedLength) { - fetch(); - - if (decodedLength < 0) { - return -1; - } - } - - int read = Math.min(decodedLength - decodedPos, len); - System.arraycopy(decodedRow, decodedPos, b, off, read); - decodedPos += read; - - return read; - } - - @Override - public long skip(long n) throws IOException { - if (decodedLength < 0) { - return -1; - } - - if (decodedPos >= decodedLength) { - fetch(); - - if (decodedLength < 0) { - return -1; - } - } - - int skipped = (int) Math.min(decodedLength - decodedPos, n); - decodedPos += skipped; - - return skipped; - } - - @Override - public boolean markSupported() { - return false; - } - - @Override - public synchronized void reset() throws IOException { - throw new IOException("mark/reset not supported"); - } - - static class N { - N left; - N right; - - int value; // > 63 non term. - boolean canBeFill = false; - boolean isLeaf = false; - - void set(boolean next, N node) { - if (!next) { - left = node; - } else { - right = node; - } - } - - N walk(boolean next) { - return next ? right : left; - } - - @Override - public String toString() { - return "[leaf=" + isLeaf + ", value=" + value + ", canBeFill=" + canBeFill + "]"; - } - } - - static class Tree { - N root = new N(); - - void fill(int depth, int path, int value) throws IOException { - N current = root; - for (int i = 0; i < depth; i++) { - int bitPos = depth - 1 - i; - boolean isSet = ((path >> bitPos) & 1) == 1; - N next = current.walk(isSet); - if (next == null) { - next = new N(); - if (i == depth - 1) { - next.value = value; - next.isLeaf = true; - } - if (path == 0) - next.canBeFill = true; - current.set(isSet, next); - } else { - if (next.isLeaf) - throw new IOException("node is leaf, no other following"); - } - current = next; - } - } - - void fill(int depth, int path, N node) throws IOException { - N current = root; - for (int i = 0; i < depth; i++) { - int bitPos = depth - 1 - i; - boolean isSet = ((path >> bitPos) & 1) == 1; - N next = current.walk(isSet); - if (next == null) { - if (i == depth - 1) { - next = node; - } else { - next = new N(); - } - if (path == 0) - next.canBeFill = true; - current.set(isSet, next); - } else { - if (next.isLeaf) - throw new IOException("node is leaf, no other following"); - } - current = next; - } - } - } - - static final short[][] BLACK_CODES = { - { // 2 bits - 0x2, 0x3, }, - { // 3 bits - 0x2, 0x3, }, - { // 4 bits - 0x2, 0x3, }, - { // 5 bits - 0x3, }, - { // 6 bits - 0x4, 0x5, }, - { // 7 bits - 0x4, 0x5, 0x7, }, - { // 8 bits - 0x4, 0x7, }, - { // 9 bits - 0x18, }, - { // 10 bits - 0x17, 0x18, 0x37, 0x8, 0xf, }, - { // 11 bits - 0x17, 0x18, 0x28, 0x37, 0x67, 0x68, 0x6c, 0x8, 0xc, 0xd, }, - { // 12 bits - 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x1c, 0x1d, 0x1e, 0x1f, 0x24, 0x27, 0x28, 0x2b, 0x2c, 0x33, - 0x34, 0x35, 0x37, 0x38, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x64, 0x65, - 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xd2, 0xd3, - 0xd4, 0xd5, 0xd6, 0xd7, 0xda, 0xdb, }, - { // 13 bits - 0x4a, 0x4b, 0x4c, 0x4d, 0x52, 0x53, 0x54, 0x55, 0x5a, 0x5b, 0x64, 0x65, 0x6c, 0x6d, 0x72, 0x73, - 0x74, 0x75, 0x76, 0x77, } }; - static final short[][] BLACK_RUN_LENGTHS = { - { // 2 bits - 3, 2, }, - { // 3 bits - 1, 4, }, - { // 4 bits - 6, 5, }, - { // 5 bits - 7, }, - { // 6 bits - 9, 8, }, - { // 7 bits - 10, 11, 12, }, - { // 8 bits - 13, 14, }, - { // 9 bits - 15, }, - { // 10 bits - 16, 17, 0, 18, 64, }, - { // 11 bits - 24, 25, 23, 22, 19, 20, 21, 1792, 1856, 1920, }, - { // 12 bits - 1984, 2048, 2112, 2176, 2240, 2304, 2368, 2432, 2496, 2560, 52, 55, 56, 59, 60, 320, 384, 448, 53, - 54, 50, 51, 44, 45, 46, 47, 57, 58, 61, 256, 48, 49, 62, 63, 30, 31, 32, 33, 40, 41, 128, 192, 26, - 27, 28, 29, 34, 35, 36, 37, 38, 39, 42, 43, }, - { // 13 bits - 640, 704, 768, 832, 1280, 1344, 1408, 1472, 1536, 1600, 1664, 1728, 512, 576, 896, 960, 1024, 1088, - 1152, 1216, } }; - - public static final short[][] WHITE_CODES = { - { // 4 bits - 0x7, 0x8, 0xb, 0xc, 0xe, 0xf, }, - { // 5 bits - 0x12, 0x13, 0x14, 0x1b, 0x7, 0x8, }, - { // 6 bits - 0x17, 0x18, 0x2a, 0x2b, 0x3, 0x34, 0x35, 0x7, 0x8, }, - { // 7 bits - 0x13, 0x17, 0x18, 0x24, 0x27, 0x28, 0x2b, 0x3, 0x37, 0x4, 0x8, 0xc, }, - { // 8 bits - 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x1a, 0x1b, 0x2, 0x24, 0x25, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, - 0x3, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x4, 0x4a, 0x4b, 0x5, 0x52, 0x53, 0x54, 0x55, 0x58, 0x59, - 0x5a, 0x5b, 0x64, 0x65, 0x67, 0x68, 0xa, 0xb, }, - { // 9 bits - 0x98, 0x99, 0x9a, 0x9b, 0xcc, 0xcd, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, }, - { // 10 bits - }, - { // 11 bits - 0x8, 0xc, 0xd, }, - { // 12 bits - 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x1c, 0x1d, 0x1e, 0x1f, } }; - - public static final short[][] WHITE_RUN_LENGTHS = { - { // 4 bits - 2, 3, 4, 5, 6, 7, }, - { // 5 bits - 128, 8, 9, 64, 10, 11, }, - { // 6 bits - 192, 1664, 16, 17, 13, 14, 15, 1, 12, }, - { // 7 bits - 26, 21, 28, 27, 18, 24, 25, 22, 256, 23, 20, 19, }, - { // 8 bits - 33, 34, 35, 36, 37, 38, 31, 32, 29, 53, 54, 39, 40, 41, 42, 43, 44, 30, 61, 62, 63, 0, 320, 384, 45, - 59, 60, 46, 49, 50, 51, 52, 55, 56, 57, 58, 448, 512, 640, 576, 47, 48, }, - { // 9 - // bits - 1472, 1536, 1600, 1728, 704, 768, 832, 896, 960, 1024, 1088, 1152, 1216, 1280, 1344, 1408, }, - { // 10 bits - }, - { // 11 bits - 1792, 1856, 1920, }, - { // 12 bits - 1984, 2048, 2112, 2176, 2240, 2304, 2368, 2432, 2496, 2560, } }; - - final static N EOL; - final static N FILL; - final static Tree blackRunTree; - final static Tree whiteRunTree; - final static Tree eolOnlyTree; - final static Tree codeTree; - - final static int VALUE_EOL = -2000; - final static int VALUE_FILL = -1000; - final static int VALUE_PASSMODE = -3000; - final static int VALUE_HMODE = -4000; - - static { - EOL = new N(); - EOL.isLeaf = true; - EOL.value = VALUE_EOL; - FILL = new N(); - FILL.value = VALUE_FILL; - FILL.left = FILL; - FILL.right = EOL; - - eolOnlyTree = new Tree(); - try { - eolOnlyTree.fill(12, 0, FILL); - eolOnlyTree.fill(12, 1, EOL); - } catch (Exception e) { - e.printStackTrace(); - } - - blackRunTree = new Tree(); - try { - for (int i = 0; i < BLACK_CODES.length; i++) { - for (int j = 0; j < BLACK_CODES[i].length; j++) { - blackRunTree.fill(i + 2, BLACK_CODES[i][j], BLACK_RUN_LENGTHS[i][j]); - } - } - blackRunTree.fill(12, 0, FILL); - blackRunTree.fill(12, 1, EOL); - } catch (Exception e) { - e.printStackTrace(); - } - whiteRunTree = new Tree(); - try { - for (int i = 0; i < WHITE_CODES.length; i++) { - for (int j = 0; j < WHITE_CODES[i].length; j++) { - whiteRunTree.fill(i + 4, WHITE_CODES[i][j], WHITE_RUN_LENGTHS[i][j]); - } - } - whiteRunTree.fill(12, 0, FILL); - whiteRunTree.fill(12, 1, EOL); - } catch (Exception e) { - e.printStackTrace(); - } - - codeTree = new Tree(); - try { - codeTree.fill(4, 1, VALUE_PASSMODE); // pass mode - codeTree.fill(3, 1, VALUE_HMODE); // H mode - codeTree.fill(1, 1, 0); // V(0) - codeTree.fill(3, 3, 1); // V_R(1) - codeTree.fill(6, 3, 2); // V_R(2) - codeTree.fill(7, 3, 3); // V_R(3) - codeTree.fill(3, 2, -1); // V_L(1) - codeTree.fill(6, 2, -2); // V_L(2) - codeTree.fill(7, 2, -3); // V_L(3) - } catch (Exception e) { - e.printStackTrace(); - } - } + // See TIFF 6.0 Specification, Section 10: "Modified Huffman Compression", + // page 43. + + private final int columns; + private final byte[] decodedRow; + + private int decodedLength; + private int decodedPos; + + // Need to take fill order into account (?) (use flip table?) + private final int fillOrder; + private final int type; + + private int[] changesReferenceRow; + private int[] changesCurrentRow; + private int changesReferenceRowCount; + private int changesCurrentRowCount; + + private static final int EOL_CODE = 0x01; // 12 bit + + private boolean optionG32D = false; + + @SuppressWarnings("unused") // Leading zeros for aligning EOL + private boolean optionG3Fill = false; + + private boolean optionUncompressed = false; + + public CCITTFaxDecoderStream(final InputStream stream, final int columns, final int type, final int fillOrder, + final long options) { + super(Validate.notNull(stream, "stream")); + + this.columns = Validate.isTrue(columns > 0, columns, "width must be greater than 0"); + // We know this is only used for b/w (1 bit) + this.decodedRow = new byte[(columns + 7) / 8]; + this.type = type; + this.fillOrder = fillOrder;// Validate.isTrue(fillOrder == 1, fillOrder, + // "Only fill order 1 supported: %s"); // + // TODO: Implement fillOrder == 2 + + this.changesReferenceRow = new int[columns]; + this.changesCurrentRow = new int[columns]; + + switch (type) { + case TIFFExtension.COMPRESSION_CCITT_T4: + optionG32D = (options & TIFFExtension.GROUP3OPT_2DENCODING) != 0; + optionG3Fill = (options & TIFFExtension.GROUP3OPT_FILLBITS) != 0; + optionUncompressed = (options & TIFFExtension.GROUP3OPT_UNCOMPRESSED) != 0; + break; + case TIFFExtension.COMPRESSION_CCITT_T6: + optionUncompressed = (options & TIFFExtension.GROUP4OPT_UNCOMPRESSED) != 0; + break; + } + + Validate.isTrue(!optionUncompressed, optionUncompressed, + "CCITT GROUP 3/4 OPTION UNCOMPRESSED is not supported"); + } + + private void fetch() throws IOException { + if (decodedPos >= decodedLength) { + decodedLength = 0; + + try { + decodeRow(); + } catch (EOFException e) { + // TODO: Rewrite to avoid throw/catch for normal flow... + if (decodedLength != 0) { + throw e; + } + + // ..otherwise, just client code trying to read past the end of + // stream + decodedLength = -1; + } + + decodedPos = 0; + } + } + + private void decode1D() throws IOException { + int index = 0; + boolean white = true; + changesCurrentRowCount = 0; + do { + int completeRun = 0; + if (white) { + completeRun = decodeRun(whiteRunTree); + } else { + completeRun = decodeRun(blackRunTree); + } + + index += completeRun; + changesCurrentRow[changesCurrentRowCount++] = index; + // Flip color for next run + white = !white; + } while (index < columns); + } + + private void decode2D() throws IOException { + changesReferenceRowCount = changesCurrentRowCount; + int[] tmp = changesCurrentRow; + changesCurrentRow = changesReferenceRow; + changesReferenceRow = tmp; + + if (changesReferenceRowCount == 0) { + changesReferenceRowCount = 3; + changesReferenceRow[0] = columns; + changesReferenceRow[1] = columns; + changesReferenceRow[2] = columns; + } + + boolean white = true; + int index = -1; + changesCurrentRowCount = 0; + mode: while (index < columns) { + // read mode + Node n = codeTree.root; + while (true) { + n = n.walk(readBit()); + if (n == null) { + continue mode; + } else if (n.isLeaf) { + + switch (n.value) { + case VALUE_HMODE: + int runLength = 0; + runLength = decodeRun(white ? whiteRunTree : blackRunTree); + index += runLength; + changesCurrentRow[changesCurrentRowCount++] = index; + + runLength = decodeRun(white ? blackRunTree : whiteRunTree); + index += runLength; + changesCurrentRow[changesCurrentRowCount++] = index; + break; + case VALUE_PASSMODE: + index = changesReferenceRow[getNextChangingElement(index, white) + 1]; + break; + default: + // Vertical mode (-3 to 3) + index = changesReferenceRow[getNextChangingElement(index, white)] + n.value; + changesCurrentRow[changesCurrentRowCount] = index; + changesCurrentRowCount++; + white = !white; + break; + } + continue mode; + } + } + } + } + + private int getNextChangingElement(int a0, boolean white) { + int start = white ? 0 : 1; + for (int i = start; i < changesReferenceRowCount; i += 2) { + if (a0 < changesReferenceRow[i]) { + return i; + } + } + + return 0; + } + + private void decodeRowType2() throws IOException { + resetBuffer(); + decode1D(); + } + + private void decodeRowType4() throws IOException { + eof: while (true) { + // read till next EOL code + Node n = eolOnlyTree.root; + while (true) { + Node tmp = n; + n = n.walk(readBit()); + if (n == null) + continue eof; + if (n.isLeaf) { + break eof; + } + } + } + boolean k = optionG32D ? readBit() : true; + if (k) { + decode1D(); + } else { + decode2D(); + } + } + + private void decodeRowType6() throws IOException { + decode2D(); + } + + private void decodeRow() throws IOException { + switch (type) { + case TIFFBaseline.COMPRESSION_CCITT_MODIFIED_HUFFMAN_RLE: + decodeRowType2(); + break; + case TIFFExtension.COMPRESSION_CCITT_T4: + decodeRowType4(); + break; + case TIFFExtension.COMPRESSION_CCITT_T6: + decodeRowType6(); + break; + } + int index = 0; + boolean white = true; + for (int i = 0; i <= changesCurrentRowCount; i++) { + int nextChange = columns; + if (i != changesCurrentRowCount) { + nextChange = changesCurrentRow[i]; + } + if (nextChange > columns) { + nextChange = columns; + } + + int byteIndex = index / 8; + + while (index % 8 != 0 && (nextChange - index) > 0) { + decodedRow[byteIndex] |= (white ? 1 << (7 - ((index) % 8)) : 0); + index++; + } + + if (index % 8 == 0) { + byteIndex = index / 8; + final byte value = (byte) (white ? 0xff : 0x00); + + while ((nextChange - index) > 7) { + decodedRow[byteIndex] = value; + index += 8; + ++byteIndex; + } + } + + while ((nextChange - index) > 0) { + if (index % 8 == 0) { + decodedRow[byteIndex] = 0; + } + decodedRow[byteIndex] |= (white ? 1 << (7 - ((index) % 8)) : 0); + index++; + } + + white = !white; + } + + if (index != columns) { + throw new IOException("Sum of run-lengths does not equal scan line width: " + index + " > " + columns); + } + + decodedLength = (index + 7) / 8; + } + + private int decodeRun(Tree tree) throws IOException { + int total = 0; + + Node n = tree.root; + while (true) { + boolean bit = readBit(); + n = n.walk(bit); + if (n == null) + throw new IOException("Unknown code in Huffman RLE stream"); + + if (n.isLeaf) { + total += n.value; + if (n.value < 64) { + return total; + } else { + n = tree.root; + continue; + } + } + } + } + + private void resetBuffer() { + for (int i = 0; i < decodedRow.length; i++) { + decodedRow[i] = 0; + } + while (true) { + if (bufferPos == -1) { + return; + } + + try { + boolean skip = readBit(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + } + + int buffer = -1; + int bufferPos = -1; + + private boolean readBit() throws IOException { + if (bufferPos < 0 || bufferPos > 7) { + buffer = in.read(); + if (buffer == -1) { + throw new EOFException("Unexpected end of Huffman RLE stream"); + } + bufferPos = 0; + } + + boolean isSet = ((buffer >> (7 - bufferPos)) & 1) == 1; + bufferPos++; + if (bufferPos > 7) + bufferPos = -1; + return isSet; + } + + @Override + public int read() throws IOException { + if (decodedLength < 0) { + return -1; + } + + if (decodedPos >= decodedLength) { + fetch(); + + if (decodedLength < 0) { + return -1; + } + } + + return decodedRow[decodedPos++] & 0xff; + } + + @Override + public int read(byte[] b, int off, int len) throws IOException { + if (decodedLength < 0) { + return -1; + } + + if (decodedPos >= decodedLength) { + fetch(); + + if (decodedLength < 0) { + return -1; + } + } + + int read = Math.min(decodedLength - decodedPos, len); + System.arraycopy(decodedRow, decodedPos, b, off, read); + decodedPos += read; + + return read; + } + + @Override + public long skip(long n) throws IOException { + if (decodedLength < 0) { + return -1; + } + + if (decodedPos >= decodedLength) { + fetch(); + + if (decodedLength < 0) { + return -1; + } + } + + int skipped = (int) Math.min(decodedLength - decodedPos, n); + decodedPos += skipped; + + return skipped; + } + + @Override + public boolean markSupported() { + return false; + } + + @Override + public synchronized void reset() throws IOException { + throw new IOException("mark/reset not supported"); + } + + static class Node { + Node left; + Node right; + + int value; // > 63 non term. + boolean canBeFill = false; + boolean isLeaf = false; + + void set(boolean next, Node node) { + if (!next) { + left = node; + } else { + right = node; + } + } + + Node walk(boolean next) { + return next ? right : left; + } + + @Override + public String toString() { + return "[leaf=" + isLeaf + ", value=" + value + ", canBeFill=" + canBeFill + "]"; + } + } + + static class Tree { + Node root = new Node(); + + void fill(int depth, int path, int value) throws IOException { + Node current = root; + for (int i = 0; i < depth; i++) { + int bitPos = depth - 1 - i; + boolean isSet = ((path >> bitPos) & 1) == 1; + Node next = current.walk(isSet); + if (next == null) { + next = new Node(); + if (i == depth - 1) { + next.value = value; + next.isLeaf = true; + } + if (path == 0) + next.canBeFill = true; + current.set(isSet, next); + } else { + if (next.isLeaf) + throw new IOException("node is leaf, no other following"); + } + current = next; + } + } + + void fill(int depth, int path, Node node) throws IOException { + Node current = root; + for (int i = 0; i < depth; i++) { + int bitPos = depth - 1 - i; + boolean isSet = ((path >> bitPos) & 1) == 1; + Node next = current.walk(isSet); + if (next == null) { + if (i == depth - 1) { + next = node; + } else { + next = new Node(); + } + if (path == 0) + next.canBeFill = true; + current.set(isSet, next); + } else { + if (next.isLeaf) + throw new IOException("node is leaf, no other following"); + } + current = next; + } + } + } + + static final short[][] BLACK_CODES = { + { // 2 bits + 0x2, 0x3, }, + { // 3 bits + 0x2, 0x3, }, + { // 4 bits + 0x2, 0x3, }, + { // 5 bits + 0x3, }, + { // 6 bits + 0x4, 0x5, }, + { // 7 bits + 0x4, 0x5, 0x7, }, + { // 8 bits + 0x4, 0x7, }, + { // 9 bits + 0x18, }, + { // 10 bits + 0x17, 0x18, 0x37, 0x8, 0xf, }, + { // 11 bits + 0x17, 0x18, 0x28, 0x37, 0x67, 0x68, 0x6c, 0x8, 0xc, 0xd, }, + { // 12 bits + 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x1c, 0x1d, 0x1e, 0x1f, 0x24, 0x27, 0x28, 0x2b, 0x2c, 0x33, + 0x34, 0x35, 0x37, 0x38, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x64, 0x65, + 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xd2, 0xd3, + 0xd4, 0xd5, 0xd6, 0xd7, 0xda, 0xdb, }, + { // 13 bits + 0x4a, 0x4b, 0x4c, 0x4d, 0x52, 0x53, 0x54, 0x55, 0x5a, 0x5b, 0x64, 0x65, 0x6c, 0x6d, 0x72, 0x73, + 0x74, 0x75, 0x76, 0x77, } }; + static final short[][] BLACK_RUN_LENGTHS = { + { // 2 bits + 3, 2, }, + { // 3 bits + 1, 4, }, + { // 4 bits + 6, 5, }, + { // 5 bits + 7, }, + { // 6 bits + 9, 8, }, + { // 7 bits + 10, 11, 12, }, + { // 8 bits + 13, 14, }, + { // 9 bits + 15, }, + { // 10 bits + 16, 17, 0, 18, 64, }, + { // 11 bits + 24, 25, 23, 22, 19, 20, 21, 1792, 1856, 1920, }, + { // 12 bits + 1984, 2048, 2112, 2176, 2240, 2304, 2368, 2432, 2496, 2560, 52, 55, 56, 59, 60, 320, 384, 448, 53, + 54, 50, 51, 44, 45, 46, 47, 57, 58, 61, 256, 48, 49, 62, 63, 30, 31, 32, 33, 40, 41, 128, 192, 26, + 27, 28, 29, 34, 35, 36, 37, 38, 39, 42, 43, }, + { // 13 bits + 640, 704, 768, 832, 1280, 1344, 1408, 1472, 1536, 1600, 1664, 1728, 512, 576, 896, 960, 1024, 1088, + 1152, 1216, } }; + + public static final short[][] WHITE_CODES = { + { // 4 bits + 0x7, 0x8, 0xb, 0xc, 0xe, 0xf, }, + { // 5 bits + 0x12, 0x13, 0x14, 0x1b, 0x7, 0x8, }, + { // 6 bits + 0x17, 0x18, 0x2a, 0x2b, 0x3, 0x34, 0x35, 0x7, 0x8, }, + { // 7 bits + 0x13, 0x17, 0x18, 0x24, 0x27, 0x28, 0x2b, 0x3, 0x37, 0x4, 0x8, 0xc, }, + { // 8 bits + 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x1a, 0x1b, 0x2, 0x24, 0x25, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, + 0x3, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x4, 0x4a, 0x4b, 0x5, 0x52, 0x53, 0x54, 0x55, 0x58, 0x59, + 0x5a, 0x5b, 0x64, 0x65, 0x67, 0x68, 0xa, 0xb, }, + { // 9 bits + 0x98, 0x99, 0x9a, 0x9b, 0xcc, 0xcd, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, }, + { // 10 bits + }, + { // 11 bits + 0x8, 0xc, 0xd, }, + { // 12 bits + 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x1c, 0x1d, 0x1e, 0x1f, } }; + + public static final short[][] WHITE_RUN_LENGTHS = { + { // 4 bits + 2, 3, 4, 5, 6, 7, }, + { // 5 bits + 128, 8, 9, 64, 10, 11, }, + { // 6 bits + 192, 1664, 16, 17, 13, 14, 15, 1, 12, }, + { // 7 bits + 26, 21, 28, 27, 18, 24, 25, 22, 256, 23, 20, 19, }, + { // 8 bits + 33, 34, 35, 36, 37, 38, 31, 32, 29, 53, 54, 39, 40, 41, 42, 43, 44, 30, 61, 62, 63, 0, 320, 384, 45, + 59, 60, 46, 49, 50, 51, 52, 55, 56, 57, 58, 448, 512, 640, 576, 47, 48, }, + { // 9 + // bits + 1472, 1536, 1600, 1728, 704, 768, 832, 896, 960, 1024, 1088, 1152, 1216, 1280, 1344, 1408, }, + { // 10 bits + }, + { // 11 bits + 1792, 1856, 1920, }, + { // 12 bits + 1984, 2048, 2112, 2176, 2240, 2304, 2368, 2432, 2496, 2560, } }; + + final static Node EOL; + final static Node FILL; + final static Tree blackRunTree; + final static Tree whiteRunTree; + final static Tree eolOnlyTree; + final static Tree codeTree; + + final static int VALUE_EOL = -2000; + final static int VALUE_FILL = -1000; + final static int VALUE_PASSMODE = -3000; + final static int VALUE_HMODE = -4000; + + static { + EOL = new Node(); + EOL.isLeaf = true; + EOL.value = VALUE_EOL; + FILL = new Node(); + FILL.value = VALUE_FILL; + FILL.left = FILL; + FILL.right = EOL; + + eolOnlyTree = new Tree(); + try { + eolOnlyTree.fill(12, 0, FILL); + eolOnlyTree.fill(12, 1, EOL); + } catch (Exception e) { + e.printStackTrace(); + } + + blackRunTree = new Tree(); + try { + for (int i = 0; i < BLACK_CODES.length; i++) { + for (int j = 0; j < BLACK_CODES[i].length; j++) { + blackRunTree.fill(i + 2, BLACK_CODES[i][j], BLACK_RUN_LENGTHS[i][j]); + } + } + blackRunTree.fill(12, 0, FILL); + blackRunTree.fill(12, 1, EOL); + } catch (Exception e) { + e.printStackTrace(); + } + whiteRunTree = new Tree(); + try { + for (int i = 0; i < WHITE_CODES.length; i++) { + for (int j = 0; j < WHITE_CODES[i].length; j++) { + whiteRunTree.fill(i + 4, WHITE_CODES[i][j], WHITE_RUN_LENGTHS[i][j]); + } + } + whiteRunTree.fill(12, 0, FILL); + whiteRunTree.fill(12, 1, EOL); + } catch (Exception e) { + e.printStackTrace(); + } + + codeTree = new Tree(); + try { + codeTree.fill(4, 1, VALUE_PASSMODE); // pass mode + codeTree.fill(3, 1, VALUE_HMODE); // H mode + codeTree.fill(1, 1, 0); // V(0) + codeTree.fill(3, 3, 1); // V_R(1) + codeTree.fill(6, 3, 2); // V_R(2) + codeTree.fill(7, 3, 3); // V_R(3) + codeTree.fill(3, 2, -1); // V_L(1) + codeTree.fill(6, 2, -2); // V_L(2) + codeTree.fill(7, 2, -3); // V_L(3) + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFExtension.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFExtension.java index ca849a74..c799fc6f 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFExtension.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFExtension.java @@ -91,9 +91,9 @@ interface TIFFExtension { int ORIENTATION_RIGHTTOP = 6; int ORIENTATION_RIGHTBOT = 7; int ORIENTATION_LEFTBOT = 8; - - int GROUP3OPT_2DENCODING = 1; - int GROUP3OPT_UNCOMPRESSED = 2; - int GROUP3OPT_FILLBITS = 4; - int GROUP4OPT_UNCOMPRESSED = 2; + + int GROUP3OPT_2DENCODING = 1; + int GROUP3OPT_UNCOMPRESSED = 2; + int GROUP3OPT_FILLBITS = 4; + int GROUP4OPT_UNCOMPRESSED = 2; } diff --git a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxDecoderStreamTest.java b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxDecoderStreamTest.java index ce817631..0139f9d1 100644 --- a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxDecoderStreamTest.java +++ b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxDecoderStreamTest.java @@ -50,154 +50,143 @@ import static org.junit.Assert.*; */ public class CCITTFaxDecoderStreamTest { - static final byte[] DATA_G3_1D = { 0x00, 0x18, // 000000000001|1000| EOL|3W| - 0x4E, 0x00, // 010|0111|000000000 1B|2W|EOL - 0x30, (byte) 0x9C, // 001|1000|010|0111|00 |3W|1B|2W|EOL - 0x00, 0x61, // 0000000001|1000|01 |3W|1B - 0x38, 0x00, // 0|0111|00000000000 |2W|EOL - (byte) 0xBE, (byte) 0xE0 }; // 1|0111|11|0111|00000 |2W|2B|2W|5F + // group3_1d.tif: EOL|3W|1B|2W|EOL|3W|1B|2W|EOL|3W|1B|2W|EOL|2W|2B|2W|5*F + static final byte[] DATA_G3_1D = { 0x00, 0x18, 0x4E, 0x00, 0x30, (byte) 0x9C, 0x00, 0x61, 0x38, 0x00, (byte) 0xBE, + (byte) 0xE0 }; - static final byte[] DATA_G3_1D_FILL = { 0x00, 0x01, (byte) 0x84, (byte) 0xE0, 0x01, (byte) 0x84, (byte) 0xE0, 0x01, - (byte) 0x84, (byte) 0xE0, 0x1, 0x7D, (byte) 0xC0 }; + // group3_1d_fill.tif + static final byte[] DATA_G3_1D_FILL = { 0x00, 0x01, (byte) 0x84, (byte) 0xE0, 0x01, (byte) 0x84, (byte) 0xE0, 0x01, + (byte) 0x84, (byte) 0xE0, 0x1, 0x7D, (byte) 0xC0 }; - static final byte[] DATA_G3_2D = { - 0x00, 0x1C, // 000000000001|1|100 EOL|1|3W - 0x27, 0x00, // 0|010|0111|00000000 |1B|2W|EOL - 0x17, 0x00, // 0001|0|1|1|1|00000000 |0|V|V|V|EOL - 0x1C, 0x27, // 0001|1|1000|010|0111| |1|3W|1B|2W| - 0x00, 0x12, // 000000000001|0|010| EOL|0|V-1| - (byte) 0xC0 }; // 1|1|000000 V|V|6F + // group3_2d.tif: EOL|k=1|3W|1B|2W|EOL|k=0|V|V|V|EOL|k=1|3W|1B|2W|EOL|k=0|V-1|V|V|6*F + static final byte[] DATA_G3_2D = { 0x00, 0x1C, 0x27, 0x00, 0x17, 0x00, 0x1C, 0x27, 0x00, 0x12, (byte) 0xC0 }; - static final byte[] DATA_G3_2D_FILL = { 0x00, 0x01, (byte) 0xC2, 0x70, 0x01, 0x70, 0x01, (byte) 0xC2, 0x70, 0x01, - 0x2C }; + // group3_2d_fill.tif + static final byte[] DATA_G3_2D_FILL = { 0x00, 0x01, (byte) 0xC2, 0x70, 0x01, 0x70, 0x01, (byte) 0xC2, 0x70, 0x01, + 0x2C }; - // EOF exception, not sure - static final byte[] DATA_G3_2D_lsb2msb = { 0x00, 0x38, (byte) 0xE4, 0x00, (byte) 0xE8, 0x00, 0x38, (byte) 0xE4, - 0x00, 0x48, 0x03 }; + static final byte[] DATA_G3_2D_lsb2msb = { 0x00, 0x38, (byte) 0xE4, 0x00, (byte) 0xE8, 0x00, 0x38, (byte) 0xE4, + 0x00, 0x48, 0x03 }; - static final byte[] DATA_G4 = { - 0x04, 0x17, // 0000 0100 0001 01|11 - (byte) 0xF5, (byte) 0x80, // 1|111| 0101 1000 0000 - 0x08, 0x00, // 0000 1000 0000 0000 - (byte) 0x80 }; // 1000 0000 - // Line 1: V-3, V-2, V0 - // Line 2: V0 V0 V0 - // Line 3: V0 V0 V0 - // Line 4: V-1, V0, V0 EOL EOL + // group4.tif: + // Line 1: V-3, V-2, V0 + // Line 2: V0 V0 V0 + // Line 3: V0 V0 V0 + // Line 4: V-1, V0, V0 EOL EOL + static final byte[] DATA_G4 = { 0x04, 0x17, (byte) 0xF5, (byte) 0x80, 0x08, 0x00, (byte) 0x80 }; - // TODO: Better tests (full A4 width scan lines?) + // TODO: Better tests (full A4 width scan lines?) - // From http://www.mikekohn.net/file_formats/tiff.php - static final byte[] DATA_TYPE_2 = { (byte) 0x84, (byte) 0xe0, // 10000100 - // 11100000 - (byte) 0x84, (byte) 0xe0, // 10000100 11100000 - (byte) 0x84, (byte) 0xe0, // 10000100 11100000 - (byte) 0x7d, (byte) 0xc0, // 01111101 11000000 - }; + // From http://www.mikekohn.net/file_formats/tiff.php + static final byte[] DATA_TYPE_2 = { (byte) 0x84, (byte) 0xe0, // 10000100 + // 11100000 + (byte) 0x84, (byte) 0xe0, // 10000100 11100000 + (byte) 0x84, (byte) 0xe0, // 10000100 11100000 + (byte) 0x7d, (byte) 0xc0, // 01111101 11000000 + }; - static final byte[] DATA_TYPE_3 = { 0x00, 0x01, (byte) 0xc2, 0x70, // 00000000 - // 00000001 - // 11000010 - // 01110000 - 0x00, 0x01, 0x78, // 00000000 00000001 01111000 - 0x00, 0x01, 0x78, // 00000000 00000001 01110000 - 0x00, 0x01, 0x56, // 00000000 00000001 01010110 - // 0x01, // 00000001 + static final byte[] DATA_TYPE_3 = { 0x00, 0x01, (byte) 0xc2, 0x70, // 00000000 + // 00000001 + // 11000010 + // 01110000 + 0x00, 0x01, 0x78, // 00000000 00000001 01111000 + 0x00, 0x01, 0x78, // 00000000 00000001 01110000 + 0x00, 0x01, 0x56, // 00000000 00000001 01010110 + // 0x01, // 00000001 - }; + }; - // 001 00110101 10 000010 1 1 1 1 1 1 1 1 1 1 010 11 (000000 padding) - static final byte[] DATA_TYPE_4 = { 0x26, // 001 00110 - (byte) 0xb0, // 101 10 000 - 0x5f, // 010 1 1 1 1 1 - (byte) 0xfa, // 1 1 1 1 1 010 - (byte) 0xc0 // 11 (000000 padding) - }; + // 001 00110101 10 000010 1 1 1 1 1 1 1 1 1 1 010 11 (000000 padding) + static final byte[] DATA_TYPE_4 = { 0x26, // 001 00110 + (byte) 0xb0, // 101 10 000 + 0x5f, // 010 1 1 1 1 1 + (byte) 0xfa, // 1 1 1 1 1 010 + (byte) 0xc0 // 11 (000000 padding) + }; - // Image should be (6 x 4): - // 1 1 1 0 1 1 x x - // 1 1 1 0 1 1 x x - // 1 1 1 0 1 1 x x - // 1 1 0 0 1 1 x x - BufferedImage image; + // Image should be (6 x 4): + // 1 1 1 0 1 1 x x + // 1 1 1 0 1 1 x x + // 1 1 1 0 1 1 x x + // 1 1 0 0 1 1 x x + BufferedImage image; - @Before - public void init() { - image = new BufferedImage(6, 4, BufferedImage.TYPE_BYTE_BINARY); - for (int y = 0; y < 4; y++) { - for (int x = 0; x < 6; x++) { - image.setRGB(x, y, x == 3 ? 0xff000000 : 0xffffffff); - } - } + @Before + public void init() { + image = new BufferedImage(6, 4, BufferedImage.TYPE_BYTE_BINARY); + for (int y = 0; y < 4; y++) { + for (int x = 0; x < 6; x++) { + image.setRGB(x, y, x == 3 ? 0xff000000 : 0xffffffff); + } + } - image.setRGB(2, 3, 0xff000000); - } + image.setRGB(2, 3, 0xff000000); + } - @Test - public void testDecodeType2() throws IOException { - InputStream stream = new CCITTFaxDecoderStream(new ByteArrayInputStream(DATA_TYPE_2), 6, - TIFFBaseline.COMPRESSION_CCITT_MODIFIED_HUFFMAN_RLE, 1, 0L); + @Test + public void testDecodeType2() throws IOException { + InputStream stream = new CCITTFaxDecoderStream(new ByteArrayInputStream(DATA_TYPE_2), 6, + TIFFBaseline.COMPRESSION_CCITT_MODIFIED_HUFFMAN_RLE, 1, 0L); - byte[] imageData = ((DataBufferByte) image.getData().getDataBuffer()).getData(); - byte[] bytes = new byte[imageData.length]; - new DataInputStream(stream).readFully(bytes); - assertArrayEquals(imageData, bytes); - } + byte[] imageData = ((DataBufferByte) image.getData().getDataBuffer()).getData(); + byte[] bytes = new byte[imageData.length]; + new DataInputStream(stream).readFully(bytes); + assertArrayEquals(imageData, bytes); + } - @Test - public void testDecodeType3_1D() throws IOException { - InputStream stream = new CCITTFaxDecoderStream(new ByteArrayInputStream(DATA_G3_1D), 6, - TIFFExtension.COMPRESSION_CCITT_T4, 1, 0L); + @Test + public void testDecodeType3_1D() throws IOException { + InputStream stream = new CCITTFaxDecoderStream(new ByteArrayInputStream(DATA_G3_1D), 6, + TIFFExtension.COMPRESSION_CCITT_T4, 1, 0L); - byte[] imageData = ((DataBufferByte) image.getData().getDataBuffer()).getData(); - byte[] bytes = new byte[imageData.length]; - new DataInputStream(stream).readFully(bytes); - assertArrayEquals(imageData, bytes); - } + byte[] imageData = ((DataBufferByte) image.getData().getDataBuffer()).getData(); + byte[] bytes = new byte[imageData.length]; + new DataInputStream(stream).readFully(bytes); + assertArrayEquals(imageData, bytes); + } - @Test - public void testDecodeType3_1D_FILL() throws IOException { - InputStream stream = new CCITTFaxDecoderStream(new ByteArrayInputStream(DATA_G3_1D_FILL), 6, - TIFFExtension.COMPRESSION_CCITT_T4, 1, TIFFExtension.GROUP3OPT_FILLBITS); + @Test + public void testDecodeType3_1D_FILL() throws IOException { + InputStream stream = new CCITTFaxDecoderStream(new ByteArrayInputStream(DATA_G3_1D_FILL), 6, + TIFFExtension.COMPRESSION_CCITT_T4, 1, TIFFExtension.GROUP3OPT_FILLBITS); - byte[] imageData = ((DataBufferByte) image.getData().getDataBuffer()).getData(); - byte[] bytes = new byte[imageData.length]; - new DataInputStream(stream).readFully(bytes); - assertArrayEquals(imageData, bytes); - } + byte[] imageData = ((DataBufferByte) image.getData().getDataBuffer()).getData(); + byte[] bytes = new byte[imageData.length]; + new DataInputStream(stream).readFully(bytes); + assertArrayEquals(imageData, bytes); + } - @Test - public void testDecodeType3_2D() throws IOException { - InputStream stream = new CCITTFaxDecoderStream(new ByteArrayInputStream(DATA_G3_2D), 6, - TIFFExtension.COMPRESSION_CCITT_T4, 1, TIFFExtension.GROUP3OPT_2DENCODING); + @Test + public void testDecodeType3_2D() throws IOException { + InputStream stream = new CCITTFaxDecoderStream(new ByteArrayInputStream(DATA_G3_2D), 6, + TIFFExtension.COMPRESSION_CCITT_T4, 1, TIFFExtension.GROUP3OPT_2DENCODING); - byte[] imageData = ((DataBufferByte) image.getData().getDataBuffer()).getData(); - byte[] bytes = new byte[imageData.length]; - new DataInputStream(stream).readFully(bytes); - assertArrayEquals(imageData, bytes); - } + byte[] imageData = ((DataBufferByte) image.getData().getDataBuffer()).getData(); + byte[] bytes = new byte[imageData.length]; + new DataInputStream(stream).readFully(bytes); + assertArrayEquals(imageData, bytes); + } - @Test - public void testDecodeType3_2D_FILL() throws IOException { - InputStream stream = new CCITTFaxDecoderStream(new ByteArrayInputStream(DATA_G3_2D_FILL), 6, - TIFFExtension.COMPRESSION_CCITT_T4, 1, - TIFFExtension.GROUP3OPT_2DENCODING | TIFFExtension.GROUP3OPT_FILLBITS); + @Test + public void testDecodeType3_2D_FILL() throws IOException { + InputStream stream = new CCITTFaxDecoderStream(new ByteArrayInputStream(DATA_G3_2D_FILL), 6, + TIFFExtension.COMPRESSION_CCITT_T4, 1, + TIFFExtension.GROUP3OPT_2DENCODING | TIFFExtension.GROUP3OPT_FILLBITS); - byte[] imageData = ((DataBufferByte) image.getData().getDataBuffer()).getData(); - byte[] bytes = new byte[imageData.length]; - new DataInputStream(stream).readFully(bytes); - assertArrayEquals(imageData, bytes); - } - - @Test - public void testDecodeType4() throws IOException { - InputStream stream = new CCITTFaxDecoderStream(new ByteArrayInputStream(DATA_G4), 6, - TIFFExtension.COMPRESSION_CCITT_T6, 1, - 0L); + byte[] imageData = ((DataBufferByte) image.getData().getDataBuffer()).getData(); + byte[] bytes = new byte[imageData.length]; + new DataInputStream(stream).readFully(bytes); + assertArrayEquals(imageData, bytes); + } - byte[] imageData = ((DataBufferByte) image.getData().getDataBuffer()).getData(); - byte[] bytes = new byte[imageData.length]; - new DataInputStream(stream).readFully(bytes); - assertArrayEquals(imageData, bytes); - } + @Test + public void testDecodeType4() throws IOException { + InputStream stream = new CCITTFaxDecoderStream(new ByteArrayInputStream(DATA_G4), 6, + TIFFExtension.COMPRESSION_CCITT_T6, 1, 0L); + + byte[] imageData = ((DataBufferByte) image.getData().getDataBuffer()).getData(); + byte[] bytes = new byte[imageData.length]; + new DataInputStream(stream).readFully(bytes); + assertArrayEquals(imageData, bytes); + } } From 37e1723891aefcf2c34bab75f9f2cf561af342b7 Mon Sep 17 00:00:00 2001 From: Schmidor Date: Thu, 2 Jul 2015 23:37:06 +0200 Subject: [PATCH 059/182] CITT Group 3/4 Support - libTiff generated files which are the test datastream sources --- .../src/test/resources/tiff/ccitt/group3_1d.tif | Bin 0 -> 282 bytes .../test/resources/tiff/ccitt/group3_1d_fill.tif | Bin 0 -> 284 bytes .../src/test/resources/tiff/ccitt/group3_2d.tif | Bin 0 -> 282 bytes .../test/resources/tiff/ccitt/group3_2d_fill.tif | Bin 0 -> 282 bytes .../resources/tiff/ccitt/group3_2d_lsb2msb.tif | Bin 0 -> 282 bytes .../src/test/resources/tiff/ccitt/group4.tif | Bin 0 -> 266 bytes 6 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 imageio/imageio-tiff/src/test/resources/tiff/ccitt/group3_1d.tif create mode 100644 imageio/imageio-tiff/src/test/resources/tiff/ccitt/group3_1d_fill.tif create mode 100644 imageio/imageio-tiff/src/test/resources/tiff/ccitt/group3_2d.tif create mode 100644 imageio/imageio-tiff/src/test/resources/tiff/ccitt/group3_2d_fill.tif create mode 100644 imageio/imageio-tiff/src/test/resources/tiff/ccitt/group3_2d_lsb2msb.tif create mode 100644 imageio/imageio-tiff/src/test/resources/tiff/ccitt/group4.tif diff --git a/imageio/imageio-tiff/src/test/resources/tiff/ccitt/group3_1d.tif b/imageio/imageio-tiff/src/test/resources/tiff/ccitt/group3_1d.tif new file mode 100644 index 0000000000000000000000000000000000000000..5a87ee3d79892cf272eaf990188e6824802e4093 GIT binary patch literal 282 zcmebD)M5}}00Id=27@^ai53j|9tbcnFfubR0tMNCm=Vfm0kWB(Y>*r?l+6rM2W119 z3|vTR1Q}Vt=5PSTg^@#tib9149^}D2Q%2^i=~yC+v^|^Bs(hg~8%!X=)&P!OWSQAlioO II><{70IawaegFUf literal 0 HcmV?d00001 diff --git a/imageio/imageio-tiff/src/test/resources/tiff/ccitt/group3_1d_fill.tif b/imageio/imageio-tiff/src/test/resources/tiff/ccitt/group3_1d_fill.tif new file mode 100644 index 0000000000000000000000000000000000000000..e1ce7e062c5f51dc95cbb9680f0b27e289761e82 GIT binary patch literal 284 zcmebD)M5~000PFA2T)XdfI$GrXJ%jo3bTQvpllW(n+eJW$uUFO%pi48Hjv4{g``H1 zkp*lH2T)uHNn8|(Ee2(S%om5M=LNE5kkqI^#X)K`f#OU+8t5_xJ4RM8`woz24`hSf z`vxQh1P|PpMSzq8Ll~bZh;BIaRRcsP?2rTV9gK~I!QyFYY9M;S%$b}Z+J@^o$V(0Y D+c*}D literal 0 HcmV?d00001 diff --git a/imageio/imageio-tiff/src/test/resources/tiff/ccitt/group3_2d.tif b/imageio/imageio-tiff/src/test/resources/tiff/ccitt/group3_2d.tif new file mode 100644 index 0000000000000000000000000000000000000000..9d0a4ff95f0cb14d1509b695c2bf6c771ac262db GIT binary patch literal 282 zcmebD)M5}}00J3x25}G}bbvvCfq{{kfe|Rk2E>d|HVcr=1Z9Kdn4xTDkUA(E$YkI` zQX|O70yc*OC@zE~E{en!gR(*9i$m3O1KBc2YE+=&AbT}|;!Hpq=rRU7MpiKU7LaET zWP{xM3M2&t58RkR9&=y_;}ZqZ4TrvJfaruBa$vrLv9T~%JS|NPL@$^*lM_VSa9sy^ G$pHYKKoW!i literal 0 HcmV?d00001 diff --git a/imageio/imageio-tiff/src/test/resources/tiff/ccitt/group3_2d_fill.tif b/imageio/imageio-tiff/src/test/resources/tiff/ccitt/group3_2d_fill.tif new file mode 100644 index 0000000000000000000000000000000000000000..70518f645ca29757a7993fa88b97c9f2906189eb GIT binary patch literal 282 zcmebD)M5}}00PEC1&jqCLWe;B$YW+;1PZc&B%o{-Ae#xw2FWo)*~}nyP&Sasz=fnn zkdXy!4hK+N2uWNNi7f_YgUlC)s^WsuaUK*d>s;+jBlCLj%T8G{`oE0}!?$g>Bs zLGFD8k^+JUZp02Qz~J0|O&710zt74Tu?`Y!)D!3Cae^F+G8^bJ20KPpF#8se zXAfk9-1`b71q2V=m_Z(MU0J)_UfdBvi literal 0 HcmV?d00001 diff --git a/imageio/imageio-tiff/src/test/resources/tiff/ccitt/group4.tif b/imageio/imageio-tiff/src/test/resources/tiff/ccitt/group4.tif new file mode 100644 index 0000000000000000000000000000000000000000..aa06b4321f0daa44e0b9fdba4d7bddf8bbc8b0c0 GIT binary patch literal 266 zcmebD)M5}|U|?Vo|JuO8(7?dYz`)4Nzz7s!17b!fn+3>bg0ew!%t+#FP&QDQfeT5E zAR`Od91ftk5R$kk5?c()2AMAoRnHD&%OI)I1hSccVnEk0*fFw#*{6U!dmtO+##HsIQv=ZpX3pdU(KcMynL#uF_?;5k literal 0 HcmV?d00001 From 62862d835a1db490af12dbadd8748378d5db0776 Mon Sep 17 00:00:00 2001 From: Schmidor Date: Sat, 4 Jul 2015 00:13:27 +0200 Subject: [PATCH 060/182] CITT Group 3/4 Support - corrected start index in 2d decoding --- .../imageio/plugins/tiff/CCITTFaxDecoderStream.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxDecoderStream.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxDecoderStream.java index ae5eb26e..34a0e9e3 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxDecoderStream.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxDecoderStream.java @@ -154,7 +154,7 @@ final class CCITTFaxDecoderStream extends FilterInputStream { } boolean white = true; - int index = -1; + int index = 0; changesCurrentRowCount = 0; mode: while (index < columns) { // read mode From 1e6227bee59781a8180a0929cda7ce9e7fb96da3 Mon Sep 17 00:00:00 2001 From: Schmidor Date: Sat, 4 Jul 2015 00:42:09 +0200 Subject: [PATCH 061/182] CCITT FAX Encoding: Support FillOrder Reversed --- .../imageio/plugins/tiff/CCITTFaxDecoderStream.java | 11 +++++++++-- .../plugins/tiff/CCITTFaxDecoderStreamTest.java | 11 +++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxDecoderStream.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxDecoderStream.java index 34a0e9e3..cd149a31 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxDecoderStream.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxDecoderStream.java @@ -33,6 +33,7 @@ import java.io.FilterInputStream; import java.io.IOException; import java.io.InputStream; +import com.twelvemonkeys.imageio.metadata.exif.TIFF; import com.twelvemonkeys.lang.Validate; /** @@ -345,8 +346,14 @@ final class CCITTFaxDecoderStream extends FilterInputStream { } bufferPos = 0; } - - boolean isSet = ((buffer >> (7 - bufferPos)) & 1) == 1; + + boolean isSet; + if(fillOrder == TIFFBaseline.FILL_LEFT_TO_RIGHT){ + isSet = ((buffer >> (7 - bufferPos)) & 1) == 1; + }else{ + isSet = ((buffer >> (bufferPos)) & 1) == 1; + } + bufferPos++; if (bufferPos > 7) bufferPos = -1; diff --git a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxDecoderStreamTest.java b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxDecoderStreamTest.java index 0139f9d1..b7c9ac87 100644 --- a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxDecoderStreamTest.java +++ b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxDecoderStreamTest.java @@ -179,6 +179,17 @@ public class CCITTFaxDecoderStreamTest { assertArrayEquals(imageData, bytes); } + @Test + public void testDecodeType3_2D_REVERSED() throws IOException { + InputStream stream = new CCITTFaxDecoderStream(new ByteArrayInputStream(DATA_G3_2D_lsb2msb), 6, + TIFFExtension.COMPRESSION_CCITT_T4, 2, TIFFExtension.GROUP3OPT_2DENCODING); + + byte[] imageData = ((DataBufferByte) image.getData().getDataBuffer()).getData(); + byte[] bytes = new byte[imageData.length]; + new DataInputStream(stream).readFully(bytes); + assertArrayEquals(imageData, bytes); + } + @Test public void testDecodeType4() throws IOException { InputStream stream = new CCITTFaxDecoderStream(new ByteArrayInputStream(DATA_G4), 6, From 6facef3142c4fc541ca4e37d31a880aab4568958 Mon Sep 17 00:00:00 2001 From: Schmidor Date: Sun, 5 Jul 2015 17:57:04 +0200 Subject: [PATCH 062/182] CCITTFax: Output Zero for White --- .../plugins/tiff/CCITTFaxDecoderStream.java | 14 +++++++------- .../plugins/tiff/CCITTFaxDecoderStreamTest.java | 4 ++-- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxDecoderStream.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxDecoderStream.java index cd149a31..a495c240 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxDecoderStream.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxDecoderStream.java @@ -262,13 +262,13 @@ final class CCITTFaxDecoderStream extends FilterInputStream { int byteIndex = index / 8; while (index % 8 != 0 && (nextChange - index) > 0) { - decodedRow[byteIndex] |= (white ? 1 << (7 - ((index) % 8)) : 0); + decodedRow[byteIndex] |= (white ? 0 : 1 << (7 - ((index) % 8))); index++; } if (index % 8 == 0) { byteIndex = index / 8; - final byte value = (byte) (white ? 0xff : 0x00); + final byte value = (byte) (white ? 0x00 : 0xff); while ((nextChange - index) > 7) { decodedRow[byteIndex] = value; @@ -281,7 +281,7 @@ final class CCITTFaxDecoderStream extends FilterInputStream { if (index % 8 == 0) { decodedRow[byteIndex] = 0; } - decodedRow[byteIndex] |= (white ? 1 << (7 - ((index) % 8)) : 0); + decodedRow[byteIndex] |= (white ? 0 : 1 << (7 - ((index) % 8))); index++; } @@ -346,14 +346,14 @@ final class CCITTFaxDecoderStream extends FilterInputStream { } bufferPos = 0; } - + boolean isSet; - if(fillOrder == TIFFBaseline.FILL_LEFT_TO_RIGHT){ + if (fillOrder == TIFFBaseline.FILL_LEFT_TO_RIGHT) { isSet = ((buffer >> (7 - bufferPos)) & 1) == 1; - }else{ + } else { isSet = ((buffer >> (bufferPos)) & 1) == 1; } - + bufferPos++; if (bufferPos > 7) bufferPos = -1; diff --git a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxDecoderStreamTest.java b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxDecoderStreamTest.java index b7c9ac87..31189ff0 100644 --- a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxDecoderStreamTest.java +++ b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxDecoderStreamTest.java @@ -116,11 +116,11 @@ public class CCITTFaxDecoderStreamTest { image = new BufferedImage(6, 4, BufferedImage.TYPE_BYTE_BINARY); for (int y = 0; y < 4; y++) { for (int x = 0; x < 6; x++) { - image.setRGB(x, y, x == 3 ? 0xff000000 : 0xffffffff); + image.setRGB(x, y, x != 3 ? 0xff000000 : 0xffffffff); } } - image.setRGB(2, 3, 0xff000000); + image.setRGB(2, 3, 0xffffffff); } @Test From bad9aebdeeea9a2fdd74586cf4c92ea037da0e3f Mon Sep 17 00:00:00 2001 From: Schmidor Date: Sun, 5 Jul 2015 18:15:43 +0200 Subject: [PATCH 063/182] Work in progress: CCITT Encoder --- .../plugins/tiff/CCITTFaxEncoderStream.java | 213 ++++++++++++++++++ 1 file changed, 213 insertions(+) create mode 100644 imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxEncoderStream.java diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxEncoderStream.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxEncoderStream.java new file mode 100644 index 00000000..0e912e4b --- /dev/null +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxEncoderStream.java @@ -0,0 +1,213 @@ +package com.twelvemonkeys.imageio.plugins.tiff; + +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; + +import com.twelvemonkeys.lang.Validate; + +public class CCITTFaxEncoderStream extends OutputStream { + + private int currentBufferLength = 0; + private final byte[] inputBuffer; + private final int inputBufferLength; + private int columns; + + private int[] changesCurrentRow; + private int[] changesReferenceRow; + private int changesCurrentRowLength = 0; + private int changesReferenceRowLength = 0; + private byte outputBuffer = 0; + private byte outputBufferBitLength = 0; + private int type; + private int fillOrder; + private boolean optionG32D; + private boolean optionG3Fill; + private boolean optionUncompressed; + private OutputStream stream; + + public CCITTFaxEncoderStream(final OutputStream stream, final int columns, final int type, final int fillOrder, + final long options) { + + this.stream = stream; + this.type = type; + this.columns = columns; + this.fillOrder = fillOrder; + + this.changesReferenceRow = new int[columns]; + this.changesCurrentRow = new int[columns]; + + switch (type) { + case TIFFExtension.COMPRESSION_CCITT_T4: + optionG32D = (options & TIFFExtension.GROUP3OPT_2DENCODING) != 0; + optionG3Fill = (options & TIFFExtension.GROUP3OPT_FILLBITS) != 0; + optionUncompressed = (options & TIFFExtension.GROUP3OPT_UNCOMPRESSED) != 0; + break; + case TIFFExtension.COMPRESSION_CCITT_T6: + optionUncompressed = (options & TIFFExtension.GROUP4OPT_UNCOMPRESSED) != 0; + break; + } + + inputBufferLength = (columns + 7) / 8; + inputBuffer = new byte[inputBufferLength]; + + Validate.isTrue(!optionUncompressed, optionUncompressed, + "CCITT GROUP 3/4 OPTION UNCOMPRESSED is not supported"); + } + + @Override + public void write(int b) throws IOException { + inputBuffer[currentBufferLength] = (byte) b; + currentBufferLength++; + + if (currentBufferLength == inputBufferLength) { + encodeRow(); + } + } + + // TODO: when to write end EOLs, half filled buffer bytes etc. on end? + + private void encodeRow() throws IOException { + changesReferenceRow = changesCurrentRow; + changesReferenceRowLength = changesCurrentRowLength; + changesCurrentRowLength = 0; + + int index = 0; + boolean white = true; + while (index < columns) { + int byteIndex = index / 8; + int bit = index % 8; + if ((((inputBuffer[byteIndex] >> (7 - bit)) & 1) == 1) != (!white)) { + changesCurrentRow[changesCurrentRowLength] = index; + changesCurrentRowLength++; + white = !white; + } + index++; + } + + switch (type) { + case TIFFBaseline.COMPRESSION_CCITT_MODIFIED_HUFFMAN_RLE: + encodeRowType2(); + break; + case TIFFExtension.COMPRESSION_CCITT_T4: + encodeRowType4(); + break; + case TIFFExtension.COMPRESSION_CCITT_T6: + encodeRowType6(); + break; + } + } + + private void encodeRowType2() throws IOException { + encode1D(); + fill(); + } + + private void encodeRowType4() throws IOException { + writeEOL(); + if (optionG32D) { + // TODO decide whether 1d or 2d row, write k, encode + } else { + // TODO encode1d + } + } + + private void encodeRowType6() { + encode2D(); + } + + private void encode1D() throws IOException { + int index = 0; + boolean white = true; + while (index < columns) { + int nextChange = columns; + for (int i = 0; i < changesCurrentRowLength; i++) { + if (index < changesCurrentRow[i]) { + nextChange = changesCurrentRow[i]; + } + } + int runLength = nextChange - index; + + int nonterm = runLength / 64; + Code[] codes = white ? WHITE_NONTERMINATING_CODES : BLACK_NONTERMINATING_CODES; + while (nonterm > 0) { + if (nonterm >= codes.length) { + write(codes[codes.length-1].code,codes[codes.length-1].length); + nonterm -= codes.length - 1; + } else { + write(codes[nonterm - 1].code,codes[nonterm - 1].length); + nonterm = 0; + } + } + + Code c = white ? WHITE_TERMINATING_CODES[runLength % 64] : BLACK_TERMINATING_CODES[runLength % 64]; + write(c.code, c.length); + } + } + + private void encode2D() { + + } + + private void write(int code, int codeLength) throws IOException { + + for (int i = 0; i < codeLength; i++) { + boolean codeBit = ((code >> (i)) & 1) == 1; + + if (fillOrder == TIFFBaseline.FILL_LEFT_TO_RIGHT) { + outputBuffer |= (codeBit ? 1 << (7 - ((outputBufferBitLength) % 8)) : 0); + } else { + outputBuffer |= (codeBit ? 1 << (((outputBufferBitLength) % 8)) : 0); + } + outputBufferBitLength++; + + if (outputBufferBitLength == 8) { + stream.write(outputBuffer); + clearOutputBuffer(); + } + } + } + + private void writeEOL() throws IOException { + if (optionG3Fill) { + // Fill up so EOL ends on a byte-boundary + while (outputBufferBitLength != 4) { + write(0, 1); + } + } + write(1, 12); + } + + private void fill() throws IOException { + stream.write(outputBuffer); + clearOutputBuffer(); + } + + private void clearOutputBuffer() { + outputBuffer = 0; + outputBufferBitLength = 0; + } + + private static class Code { + public static Code create(int code, int length) { + Code c = new Code(code, length); + return c; + } + + private Code(int code, int length) { + this.code = code; + this.length = length; + } + + final int code; + final int length; + } + + private Code[] WHITE_TERMINATING_CODES = {}; + + private Code[] WHITE_NONTERMINATING_CODES = {}; + + private Code[] BLACK_TERMINATING_CODES = {}; + + private Code[] BLACK_NONTERMINATING_CODES = {}; +} From eef4c72daa5fc7e7e86b19737bb18b670256df73 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Wed, 8 Jul 2015 23:21:13 +0200 Subject: [PATCH 064/182] Code clean-up. --- .../java/com/twelvemonkeys/imageio/plugins/tiff/LZWDecoder.java | 1 - 1 file changed, 1 deletion(-) diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/LZWDecoder.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/LZWDecoder.java index 87c328c3..251b3812 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/LZWDecoder.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/LZWDecoder.java @@ -190,7 +190,6 @@ abstract class LZWDecoder implements Decoder { public static Decoder create(boolean oldBitReversedStream) { return oldBitReversedStream ? new LZWCompatibilityDecoder() : new LZWSpecDecoder(); -// return oldBitReversedStream ? new LZWCompatibilityDecoder() : new LZWTreeDecoder(); } static final class LZWSpecDecoder extends LZWDecoder { From d1cb941f06abdbf9f1c725649bd6bb5eb444fb5c Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Sat, 11 Jul 2015 13:07:20 +0200 Subject: [PATCH 065/182] TMI-150: Fix for 24 bit images with bitmask. --- .../imageio/plugins/bmp/BitmapDescriptor.java | 14 +++++ .../imageio/plugins/bmp/BitmapIndexed.java | 59 ++++++++---------- .../imageio/plugins/bmp/BitmapMask.java | 8 +-- .../imageio/plugins/bmp/BitmapRGB.java | 34 ++++++++++ .../imageio/plugins/bmp/DIBImageReader.java | 51 ++++++++++----- .../plugins/bmp/ICOImageReaderTest.java | 4 +- .../src/test/resources/ico/rgb24bitmask.ico | Bin 0 -> 3262 bytes 7 files changed, 117 insertions(+), 53 deletions(-) create mode 100644 imageio/imageio-bmp/src/test/resources/ico/rgb24bitmask.ico diff --git a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/BitmapDescriptor.java b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/BitmapDescriptor.java index 3587d662..a5a00f6a 100755 --- a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/BitmapDescriptor.java +++ b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/BitmapDescriptor.java @@ -43,6 +43,7 @@ abstract class BitmapDescriptor { protected final DIBHeader header; protected BufferedImage image; + protected BitmapMask mask; public BitmapDescriptor(final DirectoryEntry pEntry, final DIBHeader pHeader) { Validate.notNull(pEntry, "entry"); @@ -69,4 +70,17 @@ abstract class BitmapDescriptor { protected final int getBitCount() { return entry.getBitCount() != 0 ? entry.getBitCount() : header.getBitCount(); } + + @Override + public String toString() { + return getClass().getSimpleName() + "[" + entry + ", " + header + "]"; + } + + public final void setMask(final BitmapMask mask) { + this.mask = mask; + } + + public final boolean hasMask() { + return header.getHeight() == getHeight() * 2; + } } diff --git a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/BitmapIndexed.java b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/BitmapIndexed.java index c5d33293..cb2c413a 100755 --- a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/BitmapIndexed.java +++ b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/BitmapIndexed.java @@ -28,8 +28,6 @@ package com.twelvemonkeys.imageio.plugins.bmp; -import com.twelvemonkeys.image.InverseColorMapIndexColorModel; - import java.awt.image.BufferedImage; import java.awt.image.DataBuffer; import java.awt.image.IndexColorModel; @@ -46,8 +44,6 @@ class BitmapIndexed extends BitmapDescriptor { protected final int[] bits; protected final int[] colors; - private BitmapMask mask; - public BitmapIndexed(final DirectoryEntry pEntry, final DIBHeader pHeader) { super(pEntry, pHeader); bits = new int[getWidth() * getHeight()]; @@ -65,7 +61,7 @@ class BitmapIndexed extends BitmapDescriptor { // This is slightly obscure, and should probably be moved.. Hashtable properties = null; if (entry instanceof DirectoryEntry.CUREntry) { - properties = new Hashtable(1); + properties = new Hashtable<>(1); properties.put("cursor_hotspot", ((DirectoryEntry.CUREntry) this.entry).getHotspot()); } @@ -89,8 +85,6 @@ class BitmapIndexed extends BitmapDescriptor { raster.setSamples(0, 0, getWidth(), getHeight(), 0, bits); - //System.out.println("Image: " + image); - return image; } @@ -100,40 +94,40 @@ class BitmapIndexed extends BitmapDescriptor { IndexColorModel createColorModel() { // NOTE: This is a hack to make room for transparent pixel for mask int bits = getBitCount(); - + int colors = this.colors.length; - int trans = -1; + int transparent = -1; // Try to avoid USHORT transfertype, as it results in BufferedImage TYPE_CUSTOM // NOTE: This code assumes icons are small, and is NOT optimized for performance... if (colors > (1 << getBitCount())) { - int index = findTransIndexMaybeRemap(this.colors, this.bits); + int index = findTransparentIndexMaybeRemap(this.colors, this.bits); if (index == -1) { // No duplicate found, increase bitcount bits++; - trans = this.colors.length - 1; + transparent = this.colors.length - 1; } else { - // Found a duplicate, use it as trans - trans = index; + // Found a duplicate, use it as transparent + transparent = index; colors--; } } // NOTE: Setting hasAlpha to true, makes things work on 1.2 - return new InverseColorMapIndexColorModel( - bits, colors, this.colors, 0, true, trans, + return new IndexColorModel( + bits, colors, this.colors, 0, true, transparent, bits <= 8 ? DataBuffer.TYPE_BYTE : DataBuffer.TYPE_USHORT ); } - private static int findTransIndexMaybeRemap(final int[] pColors, final int[] pBits) { + private static int findTransparentIndexMaybeRemap(final int[] colors, final int[] bits) { // Look for unused colors, to use as transparent - final boolean[] used = new boolean[pColors.length - 1]; - for (int pBit : pBits) { - if (!used[pBit]) { - used[pBit] = true; + boolean[] used = new boolean[colors.length - 1]; + for (int bit : bits) { + if (!used[bit]) { + used[bit] = true; } } @@ -144,38 +138,35 @@ class BitmapIndexed extends BitmapDescriptor { } // Try to find duplicates in colormap, and remap - int trans = -1; + int transparent = -1; int duplicate = -1; - for (int i = 0; trans == -1 && i < pColors.length - 1; i++) { - for (int j = i + 1; j < pColors.length - 1; j++) { - if (pColors[i] == pColors[j]) { - trans = j; + for (int i = 0; transparent == -1 && i < colors.length - 1; i++) { + for (int j = i + 1; j < colors.length - 1; j++) { + if (colors[i] == colors[j]) { + transparent = j; duplicate = i; break; } } } - if (trans != -1) { + if (transparent != -1) { // Remap duplicate - for (int i = 0; i < pBits.length; i++) { - if (pBits[i] == trans) { - pBits[i] = duplicate; + for (int i = 0; i < bits.length; i++) { + if (bits[i] == transparent) { + bits[i] = duplicate; } } } - return trans; + return transparent; } public BufferedImage getImage() { if (image == null) { image = createImageIndexed(); } + return image; } - - public void setMask(final BitmapMask pMask) { - mask = pMask; - } } diff --git a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/BitmapMask.java b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/BitmapMask.java index c4831680..5d619cf6 100755 --- a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/BitmapMask.java +++ b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/BitmapMask.java @@ -38,19 +38,19 @@ import java.awt.image.BufferedImage; * @version $Id: BitmapMask.java,v 1.0 25.feb.2006 00:29:44 haku Exp$ */ class BitmapMask extends BitmapDescriptor { - protected final BitmapIndexed mask; + protected final BitmapIndexed bitMask; public BitmapMask(final DirectoryEntry pParent, final DIBHeader pHeader) { super(pParent, pHeader); - mask = new BitmapIndexed(pParent, pHeader); + bitMask = new BitmapIndexed(pParent, pHeader); } boolean isTransparent(final int pX, final int pY) { // NOTE: 1: Fully transparent, 0: Opaque... - return mask.bits[pX + pY * getWidth()] != 0; + return bitMask.bits[pX + pY * getWidth()] != 0; } public BufferedImage getImage() { - return mask.getImage(); + return bitMask.getImage(); } } diff --git a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/BitmapRGB.java b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/BitmapRGB.java index 11dc17d4..05f43600 100755 --- a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/BitmapRGB.java +++ b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/BitmapRGB.java @@ -28,7 +28,9 @@ package com.twelvemonkeys.imageio.plugins.bmp; +import java.awt.*; import java.awt.image.BufferedImage; +import java.awt.image.WritableRaster; /** * Describes an RGB/true color bitmap structure (16, 24 and 32 bits per pixel). @@ -43,6 +45,38 @@ class BitmapRGB extends BitmapDescriptor { } public BufferedImage getImage() { + // Test is mask != null rather than hasMask(), as 32 bit (w/alpha) + // might still have bitmask, but we don't read or use it. + if (mask != null) { + image = createMaskedImage(); + mask = null; + } + return image; } + + private BufferedImage createMaskedImage() { + BufferedImage masked = new BufferedImage(getWidth(), getHeight(), BufferedImage.TYPE_4BYTE_ABGR); + + Graphics2D graphics = masked.createGraphics(); + try { + graphics.drawImage(image, 0, 0, null); + } + finally { + graphics.dispose(); + } + + WritableRaster alphaRaster = masked.getAlphaRaster(); + + byte[] trans = {0x0}; + for (int y = 0; y < getHeight(); y++) { + for (int x = 0; x < getWidth(); x++) { + if (mask.isTransparent(x, y)) { + alphaRaster.setDataElements(x, y, trans); + } + } + } + + return masked; + } } diff --git a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/DIBImageReader.java b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/DIBImageReader.java index bd8087ff..eb5207b1 100644 --- a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/DIBImageReader.java +++ b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/DIBImageReader.java @@ -66,14 +66,15 @@ import java.util.List; // TODO: Decide whether DirectoryEntry or DIBHeader should be primary source for color count/bit count // TODO: Support loading icons from DLLs, see // MSDN -// Known issue: 256x256 PNG encoded icons does not have IndexColorModel even if stated in DirectoryEntry (seem impossible as the PNGs are all true color) +// Known issue: 256x256 PNG encoded icons does not have IndexColorModel even if stated in DirectoryEntry +// (seem impossible as the PNGs are all true color) abstract class DIBImageReader extends ImageReaderBase { // TODO: Consider moving the reading to inner classes (subclasses of BitmapDescriptor) private Directory directory; // TODO: Review these, make sure we don't have a memory leak - private Map headers = new WeakHashMap(); - private Map descriptors = new WeakWeakMap(); + private Map headers = new WeakHashMap<>(); + private Map descriptors = new WeakWeakMap<>(); private ImageReader pngImageReader; @@ -101,7 +102,7 @@ abstract class DIBImageReader extends ImageReaderBase { return getImageTypesPNG(entry); } - List types = new ArrayList(); + List types = new ArrayList<>(); DIBHeader header = getHeader(entry); // Use data from header to create specifier @@ -121,10 +122,13 @@ abstract class DIBImageReader extends ImageReaderBase { specifier = ImageTypeSpecifiers.createFromIndexColorModel(indexed.createColorModel()); break; case 16: + // TODO: May have mask?! specifier = ImageTypeSpecifiers.createFromBufferedImageType(BufferedImage.TYPE_USHORT_555_RGB); break; case 24: - specifier = ImageTypeSpecifiers.createFromBufferedImageType(BufferedImage.TYPE_3BYTE_BGR); + specifier = new BitmapRGB(entry, header).hasMask() + ? ImageTypeSpecifiers.createFromBufferedImageType(BufferedImage.TYPE_4BYTE_ABGR) + : ImageTypeSpecifiers.createFromBufferedImageType(BufferedImage.TYPE_3BYTE_BGR); break; case 32: specifier = ImageTypeSpecifiers.createFromBufferedImageType(BufferedImage.TYPE_INT_ARGB); @@ -184,6 +188,7 @@ abstract class DIBImageReader extends ImageReaderBase { } else { Graphics2D g = destination.createGraphics(); + try { g.setComposite(AlphaComposite.Src); g.drawImage(image, 0, 0, null); @@ -316,6 +321,8 @@ abstract class DIBImageReader extends ImageReaderBase { descriptors.put(pEntry, descriptor); } + System.err.println("descriptor: " + descriptor); + return descriptor.getImage(); } @@ -335,7 +342,7 @@ abstract class DIBImageReader extends ImageReaderBase { } BitmapMask mask = new BitmapMask(pBitmap.entry, pBitmap.header); - readBitmapIndexed1(mask.mask, true); + readBitmapIndexed1(mask.bitMask, true); pBitmap.setMask(mask); } @@ -370,7 +377,7 @@ abstract class DIBImageReader extends ImageReaderBase { } } - // NOTE: If we are reading the mask, we don't abort or progress + // NOTE: If we are reading the mask, we don't abort or report progress if (!pAsMask) { if (abortRequested()) { processReadAborted(); @@ -455,7 +462,7 @@ abstract class DIBImageReader extends ImageReaderBase { short[] pixels = new short[pBitmap.getWidth() * pBitmap.getHeight()]; // TODO: Support TYPE_USHORT_565 and the RGB 444/ARGB 4444 layouts - // Will create TYPE_USHORT_555; + // Will create TYPE_USHORT_555 DirectColorModel cm = new DirectColorModel(16, 0x7C00, 0x03E0, 0x001F); DataBuffer buffer = new DataBufferShort(pixels, pixels.length); WritableRaster raster = Raster.createPackedRaster( @@ -480,6 +487,8 @@ abstract class DIBImageReader extends ImageReaderBase { processImageProgress(100 * y / (float) pBitmap.getHeight()); } + + // TODO: Might be mask!? } private void readBitmap24(final BitmapDescriptor pBitmap) throws IOException { @@ -494,16 +503,19 @@ abstract class DIBImageReader extends ImageReaderBase { cs, nBits, false, false, Transparency.OPAQUE, DataBuffer.TYPE_BYTE ); + int scanlineStride = pBitmap.getWidth() * 3; + // BMP rows are padded to 4 byte boundary + int rowSizeBytes = ((8 * scanlineStride + 31) / 32) * 4; + WritableRaster raster = Raster.createInterleavedRaster( - buffer, pBitmap.getWidth(), pBitmap.getHeight(), pBitmap.getWidth(), 3, bOffs, null + buffer, pBitmap.getWidth(), pBitmap.getHeight(), scanlineStride, 3, bOffs, null ); pBitmap.image = new BufferedImage(cm, raster, cm.isAlphaPremultiplied(), null); - - for (int y = 0; y < pBitmap.getHeight(); y++) { - int offset = (pBitmap.getHeight() - y - 1) * pBitmap.getWidth(); - imageInput.readFully(pixels, offset, pBitmap.getWidth() * 3); - // TODO: Possibly read padding byte here! + for (int y = 0; y < pBitmap.getHeight(); y++) { + int offset = (pBitmap.getHeight() - y - 1) * scanlineStride; + imageInput.readFully(pixels, offset, scanlineStride); + imageInput.skipBytes(rowSizeBytes - scanlineStride); if (abortRequested()) { processReadAborted(); @@ -512,6 +524,14 @@ abstract class DIBImageReader extends ImageReaderBase { processImageProgress(100 * y / (float) pBitmap.getHeight()); } + + // 24 bit icons usually have a bit mask + if (pBitmap.hasMask()) { + BitmapMask mask = new BitmapMask(pBitmap.entry, pBitmap.header); + readBitmapIndexed1(mask.bitMask, true); + + pBitmap.setMask(mask); + } } private void readBitmap32(final BitmapDescriptor pBitmap) throws IOException { @@ -535,6 +555,9 @@ abstract class DIBImageReader extends ImageReaderBase { } processImageProgress(100 * y / (float) pBitmap.getHeight()); } + + // There might be a mask here as well, but we'll ignore it, + // and use the 8 bit alpha channel in the ARGB pixel data } private Directory getDirectory() throws IOException { diff --git a/imageio/imageio-bmp/src/test/java/com/twelvemonkeys/imageio/plugins/bmp/ICOImageReaderTest.java b/imageio/imageio-bmp/src/test/java/com/twelvemonkeys/imageio/plugins/bmp/ICOImageReaderTest.java index b169abe2..ed5a2adc 100755 --- a/imageio/imageio-bmp/src/test/java/com/twelvemonkeys/imageio/plugins/bmp/ICOImageReaderTest.java +++ b/imageio/imageio-bmp/src/test/java/com/twelvemonkeys/imageio/plugins/bmp/ICOImageReaderTest.java @@ -39,7 +39,9 @@ public class ICOImageReaderTest extends ImageReaderAbstractTest new Dimension(16, 16), new Dimension(16, 16), new Dimension(32, 32), new Dimension(32, 32), new Dimension(48, 48), new Dimension(48, 48), new Dimension(256, 256), new Dimension(256, 256), new Dimension(16, 16), new Dimension(32, 32), new Dimension(48, 48), new Dimension(256, 256) - ) + ), + // Problematic icon that reports 24 bit in the descriptor, but has separate 1 bit ''mask (height 2 x icon height)! + new TestData(getClassLoaderResource("/ico/rgb24bitmask.ico"), new Dimension(32, 32)) ); } diff --git a/imageio/imageio-bmp/src/test/resources/ico/rgb24bitmask.ico b/imageio/imageio-bmp/src/test/resources/ico/rgb24bitmask.ico new file mode 100644 index 0000000000000000000000000000000000000000..a2bcda1c9b211d5f7794aa74fa2ed18e547f2fae GIT binary patch literal 3262 zcmbuCYgiLk8po$kAHhUes1~VWMNkw7nOsO9K!K2iglw{G{m^^}H<)q7?N5AVea)5&=~!Yg|F^+jGW`R@sORhdLljTI%4@~@)j49vPAo=Weq zxy&!|(5tl5j)m<$Fe@;XD(gc#Cz;iQ%$gx~;~2k7zhHB*XY_|!#1*z$1;lxk{=z*! z$*LQMn#MWJTBJ$GY0(S1^iGjgv}pOXpZJf0q{97}mAPIOBdim8a={>_Qb(;A_beXt zDjT7ekHRM=0y;(H>`95IY(y| zmf}9A>M^HkfTOs_seFLc4f$lLe5>#KRzKv{4WRXpcs2KUbq~?{hdfh1KKSNUL`t&f zY$}J98o@QAm!z9k@S};(KKj&0dc`zhl-;41^s{OQ*fo#nCD$1xeNfFkhP;nme2sqi z2BZ8s^U%Kpy#}F5ZND}$C{6mOjoO%;XTK(szA1{UdP3hP=bayi%lhD~VkoB?mY+s) z>Y=1Gq_i24onpp)3(G2yvWrmsUQR|XS8<7*l+Ve?@vTz92aYf|Zz5urJFm%bUcTj} z1#4T)f(;qG_PZc92=9E+4HN7Wrlx-*cD0a#bArIxW#DWS#I(6tHsMSY>n0D&P7hlM zv@QWH+Hu&G1lw;2mYuknkp$~-!lDR*wRza7$?!Vdyit6S&LF=CGSr+2xEGg$JU11>)Ut+$gIT2^)l-s&>J zA(puK7QyKT$*GsTEDprphcb84g3|F8BaDc6Xjjy-8U6gTY9u!mwCE+fS8~d>673tQ zF2CU{FR^7e1AoxEgvK(m&zhFNi#|60tDRnw!_?3A5kVchO6q3O4ccvSx9E4b5#wh5 zM083dI%z=LdeAM2=%^#i{hsK#1GIR-sThFw?!(PEN3ghxw^>cFsl{9N;AY%`vwr=2 z{Xf8%`j@XDzO>VEN1Q7r-gD_=?$vQh!nkMA7&Y!cwEaW091T6{C^!qGtyXvi?;$#| zC@$-$3@>Vsgxjj&w?Ah__Rzy0Lf`(vO1J>+9AHNF+ruGW)%L!GPfbD-E9^xPJ{3PL zSE)BPY}-`1A*ii6q&6qCyUjbj3~z-Jag8JoSK<;W#Z8L0%OkpG_@8~wYk4lbG{Wy0 z^zRx8{6QahZG6d&Bu3_mKf$MNH|+g-UT`j|=-w({`E{1hTIp7CHZ8JZrO%!O53451 zLLJ_XN_C!~x@f$eb)fYlw6%}lI?QYQ9c>s8v}*%Sk2nS=(BrFL37-nCON+4QC(>Kg zNRI(hsv+eBa>K|<%LZpjJYBTpFT|t;LuA(ql4A>L;Vtf&yGYA(ZsYI#P6O}M_+0-O zK~dWq;8Us4RPjPlGN)L5B4&|PvSG>fQuuMr^I!w0zjYw4rQQm0{h8?x0^zGa7SN9cB>*xCI<{TUL>(w(#Z!!ySqu;5SvY#0R{Vdr{ zr1CNM@K!@u~uzt+BEWX+yfhZWJB<}qHk0XhAGqZ~uej=>$ng6|Fdb1!DWQ9*L$ zJEC4E3p-dp$9IeG2{n2~&pGyl-SEV>U5_?B`5UxNRMhags%gd1UGhbLk3rit+*4Za zSp&QNku9=QRNOc%$eYF7*cj*KiTn#%xbfLsG=`gB`)2)nWGNvb9-H$Vg0eW$5B+R= zox9uGa6jqvzNUSkJ~sdW literal 0 HcmV?d00001 From d7c8df184ec459730ce0097f27c5647a9e2e2b43 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Mon, 13 Jul 2015 12:28:27 +0200 Subject: [PATCH 066/182] TMI-JPEG: Reading inverted Adobe JPEGs --- .../imageio/plugins/jpeg/JPEGImageReader.java | 49 +++++++++++++++---- 1 file changed, 39 insertions(+), 10 deletions(-) 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 16723bbb..faeffcd3 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 @@ -471,12 +471,11 @@ public class JPEGImageReader extends ImageReaderBase { YCbCrConverter.convertYCbCr2RGB(raster); } else if (csType == JPEGColorSpace.YCCK) { - YCbCrConverter.convertYCCK2CMYK(raster); + // TODO: Need to rethink this (non-) inversion, see #147 + // TODO: Allow param to specify inversion, or possibly the PDF decode array // flag0 bit 15, blend = 1 see http://graphicdesign.stackexchange.com/questions/12894/cmyk-jpegs-extracted-from-pdf-appear-inverted - if ((getAdobeDCT().flags0 & 0x8000) != 0) { - /// TODO: Better yet would be to not inverting in the first place, add flag to convertYCCK2CMYK - invertCMYK(raster); - } + boolean invert = true;// || (adobeDCT.flags0 & 0x8000) == 0; + YCbCrConverter.convertYCCK2CMYK(raster, invert); } else if (csType == JPEGColorSpace.CMYK) { invertCMYK(raster); @@ -948,6 +947,11 @@ public class JPEGImageReader extends ImageReaderBase { delegate.abort(); } + @Override + public ImageReadParam getDefaultReadParam() { + return delegate.getDefaultReadParam(); + } + @Override public boolean readerSupportsThumbnails() { return true; // We support EXIF, JFIF and JFXX style thumbnails @@ -1176,19 +1180,28 @@ public class JPEGImageReader extends ImageReaderBase { rgb[offset + 2] = clamp(y + Cb_B_LUT[cb]); } - static void convertYCCK2CMYK(final Raster raster) { + static void convertYCCK2CMYK(final Raster raster, final boolean invert) { final int height = raster.getHeight(); final int width = raster.getWidth(); final byte[] data = ((DataBufferByte) raster.getDataBuffer()).getData(); - for (int y = 0; y < height; y++) { - for (int x = 0; x < width; x++) { - convertYCCK2CMYK(data, data, (x + y * width) * 4); + if (invert) { + for (int y = 0; y < height; y++) { + for (int x = 0; x < width; x++) { + convertYCCK2CMYKInverted(data, data, (x + y * width) * 4); + } + } + } + else { + for (int y = 0; y < height; y++) { + for (int x = 0; x < width; x++) { + convertYCCK2CMYK(data, data, (x + y * width) * 4); + } } } } - private static void convertYCCK2CMYK(byte[] ycck, byte[] cmyk, int offset) { + private static void convertYCCK2CMYKInverted(byte[] ycck, byte[] cmyk, int offset) { // Inverted int y = 255 - ycck[offset ] & 0xff; int cb = 255 - ycck[offset + 1] & 0xff; @@ -1205,6 +1218,22 @@ public class JPEGImageReader extends ImageReaderBase { cmyk[offset + 3] = (byte) k; // K passes through unchanged } + private static void convertYCCK2CMYK(byte[] ycck, byte[] cmyk, int offset) { + int y = ycck[offset ] & 0xff; + int cb = ycck[offset + 1] & 0xff; + int cr = ycck[offset + 2] & 0xff; + int k = ycck[offset + 3] & 0xff; + + int cmykC = MAXJSAMPLE - (y + Cr_R_LUT[cr]); + int cmykM = MAXJSAMPLE - (y + (Cb_G_LUT[cb] + Cr_G_LUT[cr] >> SCALEBITS)); + int cmykY = MAXJSAMPLE - (y + Cb_B_LUT[cb]); + + cmyk[offset ] = clamp(cmykC); + cmyk[offset + 1] = clamp(cmykM); + cmyk[offset + 2] = clamp(cmykY); + cmyk[offset + 3] = (byte) k; // K passes through unchanged + } + private static byte clamp(int val) { return (byte) Math.max(0, Math.min(255, val)); } From d8d2764eb1ae48a62b3e03af50f4e483ec7d3127 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Thu, 16 Jul 2015 23:22:09 +0200 Subject: [PATCH 067/182] TMI-TIFF: Added format name synonyms. --- .../twelvemonkeys/imageio/plugins/tiff/TIFFProviderInfo.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFProviderInfo.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFProviderInfo.java index c57ea06a..0a5e59d2 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFProviderInfo.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFProviderInfo.java @@ -41,7 +41,7 @@ final class TIFFProviderInfo extends ReaderWriterProviderInfo { protected TIFFProviderInfo() { super( TIFFProviderInfo.class, - new String[] {"tiff", "TIFF"}, + new String[] {"tiff", "TIFF", "tif", "TIF"}, new String[] {"tif", "tiff"}, new String[] { "image/tiff", "image/x-tiff" From 1ee22e120d9319458a8934466faadc172bff20ca Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Thu, 16 Jul 2015 23:50:34 +0200 Subject: [PATCH 068/182] TMI-61: Re-added some validations, removed printStacktraces, and some minor code style issues after merge. --- .../plugins/tiff/CCITTFaxDecoderStream.java | 399 +++++++++++------- .../imageio/plugins/tiff/TIFFExtension.java | 2 + 2 files changed, 251 insertions(+), 150 deletions(-) diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxDecoderStream.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxDecoderStream.java index a495c240..2b334c9d 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxDecoderStream.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxDecoderStream.java @@ -28,24 +28,23 @@ package com.twelvemonkeys.imageio.plugins.tiff; +import com.twelvemonkeys.lang.Validate; + import java.io.EOFException; import java.io.FilterInputStream; import java.io.IOException; import java.io.InputStream; -import com.twelvemonkeys.imageio.metadata.exif.TIFF; -import com.twelvemonkeys.lang.Validate; - /** * CCITT Modified Huffman RLE, Group 3 (T4) and Group 4 (T6) fax compression. - * + * * @author Harald Kuhr + * @author Oliver Schmidtmer * @author last modified by $Author: haraldk$ * @version $Id: CCITTFaxDecoderStream.java,v 1.0 23.05.12 15:55 haraldk Exp$ */ final class CCITTFaxDecoderStream extends FilterInputStream { - // See TIFF 6.0 Specification, Section 10: "Modified Huffman Compression", - // page 43. + // See TIFF 6.0 Specification, Section 10: "Modified Huffman Compression", page 43. private final int columns; private final byte[] decodedRow; @@ -62,8 +61,6 @@ final class CCITTFaxDecoderStream extends FilterInputStream { private int changesReferenceRowCount; private int changesCurrentRowCount; - private static final int EOL_CODE = 0x01; // 12 bit - private boolean optionG32D = false; @SuppressWarnings("unused") // Leading zeros for aligning EOL @@ -72,29 +69,34 @@ final class CCITTFaxDecoderStream extends FilterInputStream { private boolean optionUncompressed = false; public CCITTFaxDecoderStream(final InputStream stream, final int columns, final int type, final int fillOrder, - final long options) { + final long options) { super(Validate.notNull(stream, "stream")); this.columns = Validate.isTrue(columns > 0, columns, "width must be greater than 0"); // We know this is only used for b/w (1 bit) this.decodedRow = new byte[(columns + 7) / 8]; - this.type = type; - this.fillOrder = fillOrder;// Validate.isTrue(fillOrder == 1, fillOrder, - // "Only fill order 1 supported: %s"); // - // TODO: Implement fillOrder == 2 + this.type = Validate.isTrue( + type == TIFFBaseline.COMPRESSION_CCITT_MODIFIED_HUFFMAN_RLE || + type == TIFFExtension.COMPRESSION_CCITT_T4 || type == TIFFExtension.COMPRESSION_CCITT_T6, + type, "Only CCITT Modified Huffman RLE compression (2), CCITT T4 (3) or CCITT T6 (4) supported: %s" + ); + this.fillOrder = Validate.isTrue( + fillOrder == TIFFBaseline.FILL_LEFT_TO_RIGHT || fillOrder == TIFFExtension.FILL_RIGHT_TO_LEFT, + fillOrder, "Expected fill order 1 or 2: %s" + ); this.changesReferenceRow = new int[columns]; this.changesCurrentRow = new int[columns]; switch (type) { - case TIFFExtension.COMPRESSION_CCITT_T4: - optionG32D = (options & TIFFExtension.GROUP3OPT_2DENCODING) != 0; - optionG3Fill = (options & TIFFExtension.GROUP3OPT_FILLBITS) != 0; - optionUncompressed = (options & TIFFExtension.GROUP3OPT_UNCOMPRESSED) != 0; - break; - case TIFFExtension.COMPRESSION_CCITT_T6: - optionUncompressed = (options & TIFFExtension.GROUP4OPT_UNCOMPRESSED) != 0; - break; + case TIFFExtension.COMPRESSION_CCITT_T4: + optionG32D = (options & TIFFExtension.GROUP3OPT_2DENCODING) != 0; + optionG3Fill = (options & TIFFExtension.GROUP3OPT_FILLBITS) != 0; + optionUncompressed = (options & TIFFExtension.GROUP3OPT_UNCOMPRESSED) != 0; + break; + case TIFFExtension.COMPRESSION_CCITT_T6: + optionUncompressed = (options & TIFFExtension.GROUP4OPT_UNCOMPRESSED) != 0; + break; } Validate.isTrue(!optionUncompressed, optionUncompressed, @@ -107,7 +109,8 @@ final class CCITTFaxDecoderStream extends FilterInputStream { try { decodeRow(); - } catch (EOFException e) { + } + catch (EOFException e) { // TODO: Rewrite to avoid throw/catch for normal flow... if (decodedLength != 0) { throw e; @@ -126,16 +129,20 @@ final class CCITTFaxDecoderStream extends FilterInputStream { int index = 0; boolean white = true; changesCurrentRowCount = 0; + do { - int completeRun = 0; + int completeRun; + if (white) { completeRun = decodeRun(whiteRunTree); - } else { + } + else { completeRun = decodeRun(blackRunTree); } index += completeRun; changesCurrentRow[changesCurrentRowCount++] = index; + // Flip color for next run white = !white; } while (index < columns); @@ -157,45 +164,53 @@ final class CCITTFaxDecoderStream extends FilterInputStream { boolean white = true; int index = 0; changesCurrentRowCount = 0; + mode: while (index < columns) { // read mode Node n = codeTree.root; + while (true) { n = n.walk(readBit()); + if (n == null) { continue mode; - } else if (n.isLeaf) { - + } + else if (n.isLeaf) { switch (n.value) { - case VALUE_HMODE: - int runLength = 0; - runLength = decodeRun(white ? whiteRunTree : blackRunTree); - index += runLength; - changesCurrentRow[changesCurrentRowCount++] = index; + case VALUE_HMODE: + int runLength; - runLength = decodeRun(white ? blackRunTree : whiteRunTree); - index += runLength; - changesCurrentRow[changesCurrentRowCount++] = index; - break; - case VALUE_PASSMODE: - index = changesReferenceRow[getNextChangingElement(index, white) + 1]; - break; - default: - // Vertical mode (-3 to 3) - index = changesReferenceRow[getNextChangingElement(index, white)] + n.value; - changesCurrentRow[changesCurrentRowCount] = index; - changesCurrentRowCount++; - white = !white; - break; + runLength = decodeRun(white ? whiteRunTree : blackRunTree); + index += runLength; + changesCurrentRow[changesCurrentRowCount++] = index; + + runLength = decodeRun(white ? blackRunTree : whiteRunTree); + index += runLength; + changesCurrentRow[changesCurrentRowCount++] = index; + break; + + case VALUE_PASSMODE: + index = changesReferenceRow[getNextChangingElement(index, white) + 1]; + break; + + default: + // Vertical mode (-3 to 3) + index = changesReferenceRow[getNextChangingElement(index, white)] + n.value; + changesCurrentRow[changesCurrentRowCount] = index; + changesCurrentRowCount++; + white = !white; + break; } + continue mode; } } } } - private int getNextChangingElement(int a0, boolean white) { + private int getNextChangingElement(final int a0, final boolean white) { int start = white ? 0 : 1; + for (int i = start; i < changesReferenceRowCount; i += 2) { if (a0 < changesReferenceRow[i]) { return i; @@ -214,20 +229,24 @@ final class CCITTFaxDecoderStream extends FilterInputStream { eof: while (true) { // read till next EOL code Node n = eolOnlyTree.root; + while (true) { - Node tmp = n; n = n.walk(readBit()); - if (n == null) + + if (n == null) { continue eof; + } + if (n.isLeaf) { break eof; } } } - boolean k = optionG32D ? readBit() : true; - if (k) { + + if (!optionG32D || readBit()) { decode1D(); - } else { + } + else { decode2D(); } } @@ -238,23 +257,27 @@ final class CCITTFaxDecoderStream extends FilterInputStream { private void decodeRow() throws IOException { switch (type) { - case TIFFBaseline.COMPRESSION_CCITT_MODIFIED_HUFFMAN_RLE: - decodeRowType2(); - break; - case TIFFExtension.COMPRESSION_CCITT_T4: - decodeRowType4(); - break; - case TIFFExtension.COMPRESSION_CCITT_T6: - decodeRowType6(); - break; + case TIFFBaseline.COMPRESSION_CCITT_MODIFIED_HUFFMAN_RLE: + decodeRowType2(); + break; + case TIFFExtension.COMPRESSION_CCITT_T4: + decodeRowType4(); + break; + case TIFFExtension.COMPRESSION_CCITT_T6: + decodeRowType6(); + break; } + int index = 0; boolean white = true; + for (int i = 0; i <= changesCurrentRowCount; i++) { int nextChange = columns; + if (i != changesCurrentRowCount) { nextChange = changesCurrentRow[i]; } + if (nextChange > columns) { nextChange = columns; } @@ -281,6 +304,7 @@ final class CCITTFaxDecoderStream extends FilterInputStream { if (index % 8 == 0) { decodedRow[byteIndex] = 0; } + decodedRow[byteIndex] |= (white ? 0 : 1 << (7 - ((index) % 8))); index++; } @@ -295,43 +319,42 @@ final class CCITTFaxDecoderStream extends FilterInputStream { decodedLength = (index + 7) / 8; } - private int decodeRun(Tree tree) throws IOException { + private int decodeRun(final Tree tree) throws IOException { int total = 0; Node n = tree.root; + while (true) { boolean bit = readBit(); n = n.walk(bit); - if (n == null) + + if (n == null) { throw new IOException("Unknown code in Huffman RLE stream"); + } if (n.isLeaf) { total += n.value; if (n.value < 64) { return total; - } else { + } + else { n = tree.root; - continue; } } } } - private void resetBuffer() { + private void resetBuffer() throws IOException { for (int i = 0; i < decodedRow.length; i++) { decodedRow[i] = 0; } + while (true) { if (bufferPos == -1) { return; } - try { - boolean skip = readBit(); - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } + readBit(); } } @@ -341,22 +364,29 @@ final class CCITTFaxDecoderStream extends FilterInputStream { private boolean readBit() throws IOException { if (bufferPos < 0 || bufferPos > 7) { buffer = in.read(); + if (buffer == -1) { throw new EOFException("Unexpected end of Huffman RLE stream"); } + bufferPos = 0; } boolean isSet; + if (fillOrder == TIFFBaseline.FILL_LEFT_TO_RIGHT) { isSet = ((buffer >> (7 - bufferPos)) & 1) == 1; - } else { + } + else { isSet = ((buffer >> (bufferPos)) & 1) == 1; } bufferPos++; - if (bufferPos > 7) + + if (bufferPos > 7) { bufferPos = -1; + } + return isSet; } @@ -428,23 +458,25 @@ final class CCITTFaxDecoderStream extends FilterInputStream { throw new IOException("mark/reset not supported"); } - static class Node { + private static final class Node { Node left; Node right; int value; // > 63 non term. + boolean canBeFill = false; boolean isLeaf = false; - void set(boolean next, Node node) { + void set(final boolean next, final Node node) { if (!next) { left = node; - } else { + } + else { right = node; } } - Node walk(boolean next) { + Node walk(final boolean next) { return next ? right : left; } @@ -454,51 +486,69 @@ final class CCITTFaxDecoderStream extends FilterInputStream { } } - static class Tree { - Node root = new Node(); + private static final class Tree { + final Node root = new Node(); - void fill(int depth, int path, int value) throws IOException { + void fill(final int depth, final int path, final int value) throws IOException { Node current = root; + for (int i = 0; i < depth; i++) { int bitPos = depth - 1 - i; boolean isSet = ((path >> bitPos) & 1) == 1; Node next = current.walk(isSet); + if (next == null) { next = new Node(); + if (i == depth - 1) { next.value = value; next.isLeaf = true; } - if (path == 0) + + if (path == 0) { next.canBeFill = true; + } + current.set(isSet, next); - } else { - if (next.isLeaf) - throw new IOException("node is leaf, no other following"); } + else { + if (next.isLeaf) { + throw new IOException("node is leaf, no other following"); + } + } + current = next; } } - void fill(int depth, int path, Node node) throws IOException { + void fill(final int depth, final int path, final Node node) throws IOException { Node current = root; + for (int i = 0; i < depth; i++) { int bitPos = depth - 1 - i; boolean isSet = ((path >> bitPos) & 1) == 1; Node next = current.walk(isSet); + if (next == null) { if (i == depth - 1) { next = node; - } else { + } + else { next = new Node(); } - if (path == 0) + + if (path == 0) { next.canBeFill = true; + } + current.set(isSet, next); - } else { - if (next.isLeaf) - throw new IOException("node is leaf, no other following"); } + else { + if (next.isLeaf) { + throw new IOException("node is leaf, no other following"); + } + } + current = next; } } @@ -506,105 +556,148 @@ final class CCITTFaxDecoderStream extends FilterInputStream { static final short[][] BLACK_CODES = { { // 2 bits - 0x2, 0x3, }, + 0x2, 0x3, + }, { // 3 bits - 0x2, 0x3, }, + 0x2, 0x3, + }, { // 4 bits - 0x2, 0x3, }, + 0x2, 0x3, + }, { // 5 bits - 0x3, }, + 0x3, + }, { // 6 bits - 0x4, 0x5, }, + 0x4, 0x5, + }, { // 7 bits - 0x4, 0x5, 0x7, }, + 0x4, 0x5, 0x7, + }, { // 8 bits - 0x4, 0x7, }, + 0x4, 0x7, + }, { // 9 bits - 0x18, }, + 0x18, + }, { // 10 bits - 0x17, 0x18, 0x37, 0x8, 0xf, }, + 0x17, 0x18, 0x37, 0x8, 0xf, + }, { // 11 bits - 0x17, 0x18, 0x28, 0x37, 0x67, 0x68, 0x6c, 0x8, 0xc, 0xd, }, + 0x17, 0x18, 0x28, 0x37, 0x67, 0x68, 0x6c, 0x8, 0xc, 0xd, + }, { // 12 bits - 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x1c, 0x1d, 0x1e, 0x1f, 0x24, 0x27, 0x28, 0x2b, 0x2c, 0x33, - 0x34, 0x35, 0x37, 0x38, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x64, 0x65, - 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xd2, 0xd3, - 0xd4, 0xd5, 0xd6, 0xd7, 0xda, 0xdb, }, + 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x1c, 0x1d, 0x1e, 0x1f, 0x24, 0x27, 0x28, 0x2b, 0x2c, 0x33, + 0x34, 0x35, 0x37, 0x38, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x64, 0x65, + 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xd2, 0xd3, + 0xd4, 0xd5, 0xd6, 0xd7, 0xda, 0xdb, + }, { // 13 bits - 0x4a, 0x4b, 0x4c, 0x4d, 0x52, 0x53, 0x54, 0x55, 0x5a, 0x5b, 0x64, 0x65, 0x6c, 0x6d, 0x72, 0x73, - 0x74, 0x75, 0x76, 0x77, } }; + 0x4a, 0x4b, 0x4c, 0x4d, 0x52, 0x53, 0x54, 0x55, 0x5a, 0x5b, 0x64, 0x65, 0x6c, 0x6d, 0x72, 0x73, + 0x74, 0x75, 0x76, 0x77, + } + }; static final short[][] BLACK_RUN_LENGTHS = { { // 2 bits - 3, 2, }, + 3, 2, + }, { // 3 bits - 1, 4, }, + 1, 4, + }, { // 4 bits - 6, 5, }, + 6, 5, + }, { // 5 bits - 7, }, + 7, + }, { // 6 bits - 9, 8, }, + 9, 8, + }, { // 7 bits - 10, 11, 12, }, + 10, 11, 12, + }, { // 8 bits - 13, 14, }, + 13, 14, + }, { // 9 bits - 15, }, + 15, + }, { // 10 bits - 16, 17, 0, 18, 64, }, + 16, 17, 0, 18, 64, + }, { // 11 bits - 24, 25, 23, 22, 19, 20, 21, 1792, 1856, 1920, }, + 24, 25, 23, 22, 19, 20, 21, 1792, 1856, 1920, + }, { // 12 bits - 1984, 2048, 2112, 2176, 2240, 2304, 2368, 2432, 2496, 2560, 52, 55, 56, 59, 60, 320, 384, 448, 53, - 54, 50, 51, 44, 45, 46, 47, 57, 58, 61, 256, 48, 49, 62, 63, 30, 31, 32, 33, 40, 41, 128, 192, 26, - 27, 28, 29, 34, 35, 36, 37, 38, 39, 42, 43, }, + 1984, 2048, 2112, 2176, 2240, 2304, 2368, 2432, 2496, 2560, 52, 55, 56, 59, 60, 320, 384, 448, 53, + 54, 50, 51, 44, 45, 46, 47, 57, 58, 61, 256, 48, 49, 62, 63, 30, 31, 32, 33, 40, 41, 128, 192, 26, + 27, 28, 29, 34, 35, 36, 37, 38, 39, 42, 43, + }, { // 13 bits - 640, 704, 768, 832, 1280, 1344, 1408, 1472, 1536, 1600, 1664, 1728, 512, 576, 896, 960, 1024, 1088, - 1152, 1216, } }; + 640, 704, 768, 832, 1280, 1344, 1408, 1472, 1536, 1600, 1664, 1728, 512, 576, 896, 960, 1024, 1088, + 1152, 1216, + } + }; public static final short[][] WHITE_CODES = { { // 4 bits - 0x7, 0x8, 0xb, 0xc, 0xe, 0xf, }, + 0x7, 0x8, 0xb, 0xc, 0xe, 0xf, + }, { // 5 bits - 0x12, 0x13, 0x14, 0x1b, 0x7, 0x8, }, + 0x12, 0x13, 0x14, 0x1b, 0x7, 0x8, + }, { // 6 bits - 0x17, 0x18, 0x2a, 0x2b, 0x3, 0x34, 0x35, 0x7, 0x8, }, + 0x17, 0x18, 0x2a, 0x2b, 0x3, 0x34, 0x35, 0x7, 0x8, + }, { // 7 bits - 0x13, 0x17, 0x18, 0x24, 0x27, 0x28, 0x2b, 0x3, 0x37, 0x4, 0x8, 0xc, }, + 0x13, 0x17, 0x18, 0x24, 0x27, 0x28, 0x2b, 0x3, 0x37, 0x4, 0x8, 0xc, + }, { // 8 bits - 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x1a, 0x1b, 0x2, 0x24, 0x25, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, - 0x3, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x4, 0x4a, 0x4b, 0x5, 0x52, 0x53, 0x54, 0x55, 0x58, 0x59, - 0x5a, 0x5b, 0x64, 0x65, 0x67, 0x68, 0xa, 0xb, }, + 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x1a, 0x1b, 0x2, 0x24, 0x25, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, + 0x3, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x4, 0x4a, 0x4b, 0x5, 0x52, 0x53, 0x54, 0x55, 0x58, 0x59, + 0x5a, 0x5b, 0x64, 0x65, 0x67, 0x68, 0xa, 0xb, + }, { // 9 bits - 0x98, 0x99, 0x9a, 0x9b, 0xcc, 0xcd, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, }, + 0x98, 0x99, 0x9a, 0x9b, 0xcc, 0xcd, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, + }, { // 10 bits }, { // 11 bits - 0x8, 0xc, 0xd, }, + 0x8, 0xc, 0xd, + }, { // 12 bits - 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x1c, 0x1d, 0x1e, 0x1f, } }; + 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x1c, 0x1d, 0x1e, 0x1f, + } + }; public static final short[][] WHITE_RUN_LENGTHS = { { // 4 bits - 2, 3, 4, 5, 6, 7, }, + 2, 3, 4, 5, 6, 7, + }, { // 5 bits - 128, 8, 9, 64, 10, 11, }, + 128, 8, 9, 64, 10, 11, + }, { // 6 bits - 192, 1664, 16, 17, 13, 14, 15, 1, 12, }, + 192, 1664, 16, 17, 13, 14, 15, 1, 12, + }, { // 7 bits - 26, 21, 28, 27, 18, 24, 25, 22, 256, 23, 20, 19, }, + 26, 21, 28, 27, 18, 24, 25, 22, 256, 23, 20, 19, + }, { // 8 bits - 33, 34, 35, 36, 37, 38, 31, 32, 29, 53, 54, 39, 40, 41, 42, 43, 44, 30, 61, 62, 63, 0, 320, 384, 45, - 59, 60, 46, 49, 50, 51, 52, 55, 56, 57, 58, 448, 512, 640, 576, 47, 48, }, - { // 9 - // bits - 1472, 1536, 1600, 1728, 704, 768, 832, 896, 960, 1024, 1088, 1152, 1216, 1280, 1344, 1408, }, + 33, 34, 35, 36, 37, 38, 31, 32, 29, 53, 54, 39, 40, 41, 42, 43, 44, 30, 61, 62, 63, 0, 320, 384, 45, + 59, 60, 46, 49, 50, 51, 52, 55, 56, 57, 58, 448, 512, 640, 576, 47, 48, + }, + { // 9 bits + 1472, 1536, 1600, 1728, 704, 768, 832, 896, 960, 1024, 1088, 1152, 1216, 1280, 1344, 1408, + }, { // 10 bits }, { // 11 bits - 1792, 1856, 1920, }, + 1792, 1856, 1920, + }, { // 12 bits - 1984, 2048, 2112, 2176, 2240, 2304, 2368, 2432, 2496, 2560, } }; + 1984, 2048, 2112, 2176, 2240, 2304, 2368, 2432, 2496, 2560, + } + }; final static Node EOL; final static Node FILL; @@ -631,8 +724,9 @@ final class CCITTFaxDecoderStream extends FilterInputStream { try { eolOnlyTree.fill(12, 0, FILL); eolOnlyTree.fill(12, 1, EOL); - } catch (Exception e) { - e.printStackTrace(); + } + catch (IOException e) { + throw new AssertionError(e); } blackRunTree = new Tree(); @@ -644,9 +738,11 @@ final class CCITTFaxDecoderStream extends FilterInputStream { } blackRunTree.fill(12, 0, FILL); blackRunTree.fill(12, 1, EOL); - } catch (Exception e) { - e.printStackTrace(); } + catch (IOException e) { + throw new AssertionError(e); + } + whiteRunTree = new Tree(); try { for (int i = 0; i < WHITE_CODES.length; i++) { @@ -654,10 +750,12 @@ final class CCITTFaxDecoderStream extends FilterInputStream { whiteRunTree.fill(i + 4, WHITE_CODES[i][j], WHITE_RUN_LENGTHS[i][j]); } } + whiteRunTree.fill(12, 0, FILL); whiteRunTree.fill(12, 1, EOL); - } catch (Exception e) { - e.printStackTrace(); + } + catch (IOException e) { + throw new AssertionError(e); } codeTree = new Tree(); @@ -671,8 +769,9 @@ final class CCITTFaxDecoderStream extends FilterInputStream { codeTree.fill(3, 2, -1); // V_L(1) codeTree.fill(6, 2, -2); // V_L(2) codeTree.fill(7, 2, -3); // V_L(3) - } catch (Exception e) { - e.printStackTrace(); + } + catch (IOException e) { + throw new AssertionError(e); } } } diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFExtension.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFExtension.java index c799fc6f..f6444464 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFExtension.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFExtension.java @@ -62,6 +62,8 @@ interface TIFFExtension { int PREDICTOR_HORIZONTAL_DIFFERENCING = 2; int PREDICTOR_HORIZONTAL_FLOATINGPOINT = 3; + int FILL_RIGHT_TO_LEFT = 2; + int SAMPLEFORMAT_INT = 2; int SAMPLEFORMAT_FP = 3; int SAMPLEFORMAT_UNDEFINED = 4; From 4eb742659687258b245dc2966445f94292785f4d Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Mon, 27 Jul 2015 11:58:35 +0200 Subject: [PATCH 069/182] TMI-154: Fix for AccessControlException when reading "Generic CMYK.icc" --- .../java/com/twelvemonkeys/imageio/color/ColorSpaces.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/ColorSpaces.java b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/ColorSpaces.java index 7a408615..c3203daf 100644 --- a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/ColorSpaces.java +++ b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/ColorSpaces.java @@ -52,7 +52,7 @@ import java.util.Properties; *