This is an automated email from the ASF dual-hosted git repository. kinow pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/commons-imaging.git
commit 6f6e6e2a73ebf23a24bdb64bc56722a80d479ba1 Author: Bruno P. Kinoshita <ki...@apache.org> AuthorDate: Fri Apr 23 11:32:09 2021 +1200 [IMAGING-159] Update code and parameters after reading tests and examples --- .../java/org/apache/commons/imaging/Imaging.java | 15 ++++---- .../commons/imaging/common/XmpEmbeddable.java | 5 ++- .../imaging/formats/bmp/BmpImagingParameters.java | 8 ++++- .../imaging/formats/gif/GifImageParser.java | 5 +-- .../imaging/formats/gif/GifImagingParameters.java | 4 +++ .../formats/icns/IcnsImagingParameters.java | 4 +++ .../imaging/formats/ico/IcoImagingParameters.java | 4 +++ .../imaging/formats/jpeg/JpegImageParser.java | 10 ++++-- .../formats/jpeg/JpegImagingParameters.java | 4 +++ .../imaging/formats/pcx/PcxImagingParameters.java | 5 +++ .../imaging/formats/png/PngImageParser.java | 5 +-- .../imaging/formats/png/PngImagingParameters.java | 13 ++++--- .../commons/imaging/formats/png/PngWriter.java | 2 +- .../imaging/formats/pnm/PnmImageParser.java | 3 -- .../imaging/formats/pnm/PnmImagingParameters.java | 4 +++ .../imaging/formats/psd/PsdImageParser.java | 5 +-- .../imaging/formats/psd/PsdImagingParameters.java | 4 +++ .../formats/rgbe/RgbeImagingParameters.java | 4 +++ .../imaging/formats/tiff/TiffImageParser.java | 41 +++++++++++++--------- .../formats/tiff/TiffImagingParameters.java | 5 +++ .../commons/imaging/formats/tiff/TiffReader.java | 13 +++---- .../formats/wbmp/WbmpImagingParameters.java | 4 +++ .../imaging/formats/xbm/XbmImagingParameters.java | 4 +++ .../imaging/formats/xpm/XpmImagingParameters.java | 9 ++++- 24 files changed, 126 insertions(+), 54 deletions(-) diff --git a/src/main/java/org/apache/commons/imaging/Imaging.java b/src/main/java/org/apache/commons/imaging/Imaging.java index 4fbea0d..83f81c7 100644 --- a/src/main/java/org/apache/commons/imaging/Imaging.java +++ b/src/main/java/org/apache/commons/imaging/Imaging.java @@ -32,6 +32,7 @@ import java.util.Objects; import org.apache.commons.imaging.common.ImageMetadata; import org.apache.commons.imaging.common.XmpEmbeddable; +import org.apache.commons.imaging.common.XmpImagingParameters; import org.apache.commons.imaging.common.bytesource.ByteSource; import org.apache.commons.imaging.common.bytesource.ByteSourceArray; import org.apache.commons.imaging.common.bytesource.ByteSourceFile; @@ -890,7 +891,7 @@ public final class Imaging { * @throws ImageReadException if it fails to parse the image * @throws IOException if it fails to read the image data */ - public static String getXmpXml(final InputStream is, final String fileName, final ImagingParameters params) + public static String getXmpXml(final InputStream is, final String fileName, final XmpImagingParameters params) throws ImageReadException, IOException { return getXmpXml(new ByteSourceInputStream(is, fileName), params); } @@ -921,7 +922,7 @@ public final class Imaging { * @throws ImageReadException if it fails to parse the image * @throws IOException if it fails to read the image data */ - public static String getXmpXml(final byte[] bytes, final ImagingParameters params) + public static String getXmpXml(final byte[] bytes, final XmpImagingParameters params) throws ImageReadException, IOException { return getXmpXml(new ByteSourceArray(bytes), params); } @@ -938,7 +939,7 @@ public final class Imaging { */ public static String getXmpXml(final File file) throws ImageReadException, IOException { - return getXmpXml(file, null); + return getXmpXml(file, new XmpImagingParameters()); } /** @@ -952,7 +953,7 @@ public final class Imaging { * @throws ImageReadException if it fails to parse the image * @throws IOException if it fails to read the image data */ - public static String getXmpXml(final File file, final ImagingParameters params) + public static String getXmpXml(final File file, final XmpImagingParameters params) throws ImageReadException, IOException { return getXmpXml(new ByteSourceFile(file), params); } @@ -968,9 +969,7 @@ public final class Imaging { * @throws ImageReadException if it fails to parse the image * @throws IOException if it fails to read the image data */ - // TODO: we have no way of knowing whether getImageParser will return a parser that is compatible with the ImagingParameters instance given - @SuppressWarnings({ "unchecked", "rawtypes" }) - public static String getXmpXml(final ByteSource byteSource, final ImagingParameters params) + public static String getXmpXml(final ByteSource byteSource, final XmpImagingParameters params) throws ImageReadException, IOException { final ImageParser<?> imageParser = getImageParser(byteSource); if (imageParser instanceof XmpEmbeddable) { @@ -1324,7 +1323,7 @@ public final class Imaging { */ public static BufferedImage getBufferedImage(final InputStream is, final ImagingParameters params) throws ImageReadException, IOException { - String fileName = params != null ? "" : null; + String fileName = params != null ? params.getFileName() : null; return getBufferedImage(new ByteSourceInputStream(is, fileName), params); } diff --git a/src/main/java/org/apache/commons/imaging/common/XmpEmbeddable.java b/src/main/java/org/apache/commons/imaging/common/XmpEmbeddable.java index 12af31f..731f8b2 100644 --- a/src/main/java/org/apache/commons/imaging/common/XmpEmbeddable.java +++ b/src/main/java/org/apache/commons/imaging/common/XmpEmbeddable.java @@ -19,7 +19,6 @@ package org.apache.commons.imaging.common; import java.io.IOException; import org.apache.commons.imaging.ImageReadException; -import org.apache.commons.imaging.ImagingParameters; import org.apache.commons.imaging.common.bytesource.ByteSource; /** @@ -29,7 +28,7 @@ import org.apache.commons.imaging.common.bytesource.ByteSource; * @see <a href="https://en.wikipedia.org/wiki/Extensible_Metadata_Platform">https://en.wikipedia.org/wiki/Extensible_Metadata_Platform</a> * @since 1.0 */ -public interface XmpEmbeddable<T extends ImagingParameters> { +public interface XmpEmbeddable { /** * Get a string containing XML-formatted text conforming to the Extensible @@ -48,7 +47,7 @@ public interface XmpEmbeddable<T extends ImagingParameters> { * parser implementation. * @throws IOException In the event of unsuccessful read or access operation. */ - String getXmpXml(ByteSource byteSource, T params) + String getXmpXml(ByteSource byteSource, XmpImagingParameters params) throws ImageReadException, IOException; } diff --git a/src/main/java/org/apache/commons/imaging/formats/bmp/BmpImagingParameters.java b/src/main/java/org/apache/commons/imaging/formats/bmp/BmpImagingParameters.java index 73cc803..cf19e8e 100644 --- a/src/main/java/org/apache/commons/imaging/formats/bmp/BmpImagingParameters.java +++ b/src/main/java/org/apache/commons/imaging/formats/bmp/BmpImagingParameters.java @@ -17,10 +17,16 @@ package org.apache.commons.imaging.formats.bmp; +import org.apache.commons.imaging.ImageFormats; import org.apache.commons.imaging.ImagingParameters; /** * Bmp format parameters. * @since 1.0-alpha3 */ -public class BmpImagingParameters extends ImagingParameters {} +public class BmpImagingParameters extends ImagingParameters { + + public BmpImagingParameters() { + setImageFormat(ImageFormats.BMP); + } +} diff --git a/src/main/java/org/apache/commons/imaging/formats/gif/GifImageParser.java b/src/main/java/org/apache/commons/imaging/formats/gif/GifImageParser.java index 2da2527..92c4d03 100644 --- a/src/main/java/org/apache/commons/imaging/formats/gif/GifImageParser.java +++ b/src/main/java/org/apache/commons/imaging/formats/gif/GifImageParser.java @@ -48,13 +48,14 @@ import org.apache.commons.imaging.common.BinaryOutputStream; import org.apache.commons.imaging.common.ImageBuilder; import org.apache.commons.imaging.common.ImageMetadata; import org.apache.commons.imaging.common.XmpEmbeddable; +import org.apache.commons.imaging.common.XmpImagingParameters; import org.apache.commons.imaging.common.bytesource.ByteSource; import org.apache.commons.imaging.common.mylzw.MyLzwCompressor; import org.apache.commons.imaging.common.mylzw.MyLzwDecompressor; import org.apache.commons.imaging.palette.Palette; import org.apache.commons.imaging.palette.PaletteFactory; -public class GifImageParser extends ImageParser<GifImagingParameters> implements XmpEmbeddable<GifImagingParameters> { +public class GifImageParser extends ImageParser<GifImagingParameters> implements XmpEmbeddable { private static final Logger LOGGER = Logger.getLogger(GifImageParser.class.getName()); @@ -1068,7 +1069,7 @@ public class GifImageParser extends ImageParser<GifImagingParameters> implements * @return Xmp Xml as String, if present. Otherwise, returns null. */ @Override - public String getXmpXml(final ByteSource byteSource, final GifImagingParameters params) + public String getXmpXml(final ByteSource byteSource, final XmpImagingParameters params) throws ImageReadException, IOException { try (InputStream is = byteSource.getInputStream()) { final GifHeaderInfo ghi = readHeader(is, null); diff --git a/src/main/java/org/apache/commons/imaging/formats/gif/GifImagingParameters.java b/src/main/java/org/apache/commons/imaging/formats/gif/GifImagingParameters.java index 2e50660..fa8007c 100644 --- a/src/main/java/org/apache/commons/imaging/formats/gif/GifImagingParameters.java +++ b/src/main/java/org/apache/commons/imaging/formats/gif/GifImagingParameters.java @@ -17,6 +17,7 @@ package org.apache.commons.imaging.formats.gif; +import org.apache.commons.imaging.ImageFormats; import org.apache.commons.imaging.common.XmpImagingParameters; /** @@ -25,4 +26,7 @@ import org.apache.commons.imaging.common.XmpImagingParameters; */ public class GifImagingParameters extends XmpImagingParameters { + public GifImagingParameters() { + setImageFormat(ImageFormats.GIF); + } } diff --git a/src/main/java/org/apache/commons/imaging/formats/icns/IcnsImagingParameters.java b/src/main/java/org/apache/commons/imaging/formats/icns/IcnsImagingParameters.java index bbfd8c8..1d83839 100644 --- a/src/main/java/org/apache/commons/imaging/formats/icns/IcnsImagingParameters.java +++ b/src/main/java/org/apache/commons/imaging/formats/icns/IcnsImagingParameters.java @@ -15,6 +15,7 @@ package org.apache.commons.imaging.formats.icns; +import org.apache.commons.imaging.ImageFormats; import org.apache.commons.imaging.ImagingParameters; /** @@ -23,4 +24,7 @@ import org.apache.commons.imaging.ImagingParameters; */ public class IcnsImagingParameters extends ImagingParameters { + public IcnsImagingParameters() { + setImageFormat(ImageFormats.ICNS); + } } diff --git a/src/main/java/org/apache/commons/imaging/formats/ico/IcoImagingParameters.java b/src/main/java/org/apache/commons/imaging/formats/ico/IcoImagingParameters.java index d686bce..ed86d9c 100644 --- a/src/main/java/org/apache/commons/imaging/formats/ico/IcoImagingParameters.java +++ b/src/main/java/org/apache/commons/imaging/formats/ico/IcoImagingParameters.java @@ -15,6 +15,7 @@ package org.apache.commons.imaging.formats.ico; +import org.apache.commons.imaging.ImageFormats; import org.apache.commons.imaging.ImagingParameters; /** @@ -23,4 +24,7 @@ import org.apache.commons.imaging.ImagingParameters; */ public class IcoImagingParameters extends ImagingParameters { + public IcoImagingParameters () { + setImageFormat(ImageFormats.ICO); + } } diff --git a/src/main/java/org/apache/commons/imaging/formats/jpeg/JpegImageParser.java b/src/main/java/org/apache/commons/imaging/formats/jpeg/JpegImageParser.java index 216e0eb..e4bb582 100644 --- a/src/main/java/org/apache/commons/imaging/formats/jpeg/JpegImageParser.java +++ b/src/main/java/org/apache/commons/imaging/formats/jpeg/JpegImageParser.java @@ -40,6 +40,7 @@ import org.apache.commons.imaging.ImageParser; import org.apache.commons.imaging.ImageReadException; import org.apache.commons.imaging.common.ImageMetadata; import org.apache.commons.imaging.common.XmpEmbeddable; +import org.apache.commons.imaging.common.XmpImagingParameters; import org.apache.commons.imaging.common.bytesource.ByteSource; import org.apache.commons.imaging.formats.jpeg.decoder.JpegDecoder; import org.apache.commons.imaging.formats.jpeg.iptc.IptcParser; @@ -61,7 +62,7 @@ import org.apache.commons.imaging.formats.tiff.TiffImageParser; import org.apache.commons.imaging.formats.tiff.constants.TiffTagConstants; import org.apache.commons.imaging.internal.Debug; -public class JpegImageParser extends ImageParser<JpegImagingParameters> implements XmpEmbeddable<JpegImagingParameters> { +public class JpegImageParser extends ImageParser<JpegImagingParameters> implements XmpEmbeddable { private static final Logger LOGGER = Logger.getLogger(JpegImageParser.class.getName()); @@ -317,8 +318,11 @@ public class JpegImageParser extends ImageParser<JpegImagingParameters> implemen } @Override - public ImageMetadata getMetadata(final ByteSource byteSource, final JpegImagingParameters params) + public ImageMetadata getMetadata(final ByteSource byteSource, JpegImagingParameters params) throws ImageReadException, IOException { + if (params == null) { + params = new JpegImagingParameters(); + } final TiffImageMetadata exif = getExifMetadata(byteSource, params); final JpegPhotoshopMetadata photoshop = getPhotoshopMetadata(byteSource, @@ -534,7 +538,7 @@ public class JpegImageParser extends ImageParser<JpegImagingParameters> implemen * @return Xmp Xml as String, if present. Otherwise, returns null. */ @Override - public String getXmpXml(final ByteSource byteSource, final JpegImagingParameters params) + public String getXmpXml(final ByteSource byteSource, final XmpImagingParameters params) throws ImageReadException, IOException { final List<String> result = new ArrayList<>(); diff --git a/src/main/java/org/apache/commons/imaging/formats/jpeg/JpegImagingParameters.java b/src/main/java/org/apache/commons/imaging/formats/jpeg/JpegImagingParameters.java index d2083f3..fff58f3 100644 --- a/src/main/java/org/apache/commons/imaging/formats/jpeg/JpegImagingParameters.java +++ b/src/main/java/org/apache/commons/imaging/formats/jpeg/JpegImagingParameters.java @@ -15,6 +15,7 @@ package org.apache.commons.imaging.formats.jpeg; +import org.apache.commons.imaging.ImageFormats; import org.apache.commons.imaging.formats.tiff.TiffImagingParameters; /** @@ -23,4 +24,7 @@ import org.apache.commons.imaging.formats.tiff.TiffImagingParameters; */ public class JpegImagingParameters extends TiffImagingParameters { + public JpegImagingParameters() { + setImageFormat(ImageFormats.JPEG); + } } diff --git a/src/main/java/org/apache/commons/imaging/formats/pcx/PcxImagingParameters.java b/src/main/java/org/apache/commons/imaging/formats/pcx/PcxImagingParameters.java index 4fdfa6f..ed19523 100644 --- a/src/main/java/org/apache/commons/imaging/formats/pcx/PcxImagingParameters.java +++ b/src/main/java/org/apache/commons/imaging/formats/pcx/PcxImagingParameters.java @@ -15,6 +15,7 @@ package org.apache.commons.imaging.formats.pcx; +import org.apache.commons.imaging.ImageFormats; import org.apache.commons.imaging.ImagingParameters; /** @@ -27,6 +28,10 @@ public class PcxImagingParameters extends ImagingParameters { private int bitDepth = -1; private int compression = PcxConstants.PCX_COMPRESSION_UNCOMPRESSED; + public PcxImagingParameters() { + setImageFormat(ImageFormats.PCX); + } + public int getPlanes() { return planes; } diff --git a/src/main/java/org/apache/commons/imaging/formats/png/PngImageParser.java b/src/main/java/org/apache/commons/imaging/formats/png/PngImageParser.java index 67bd8a5..1632ecc 100644 --- a/src/main/java/org/apache/commons/imaging/formats/png/PngImageParser.java +++ b/src/main/java/org/apache/commons/imaging/formats/png/PngImageParser.java @@ -50,6 +50,7 @@ import org.apache.commons.imaging.ImageWriteException; import org.apache.commons.imaging.common.GenericImageMetadata; import org.apache.commons.imaging.common.ImageMetadata; import org.apache.commons.imaging.common.XmpEmbeddable; +import org.apache.commons.imaging.common.XmpImagingParameters; import org.apache.commons.imaging.common.bytesource.ByteSource; import org.apache.commons.imaging.formats.png.chunks.PngChunk; import org.apache.commons.imaging.formats.png.chunks.PngChunkGama; @@ -69,7 +70,7 @@ import org.apache.commons.imaging.formats.png.transparencyfilters.TransparencyFi import org.apache.commons.imaging.formats.png.transparencyfilters.TransparencyFilterTrueColor; import org.apache.commons.imaging.icc.IccProfileParser; -public class PngImageParser extends ImageParser<PngImagingParameters> implements XmpEmbeddable<PngImagingParameters> { +public class PngImageParser extends ImageParser<PngImagingParameters> implements XmpEmbeddable { private static final Logger LOGGER = Logger.getLogger(PngImageParser.class.getName()); @@ -703,7 +704,7 @@ public class PngImageParser extends ImageParser<PngImagingParameters> implement } @Override - public String getXmpXml(final ByteSource byteSource, final PngImagingParameters params) + public String getXmpXml(final ByteSource byteSource, final XmpImagingParameters params) throws ImageReadException, IOException { final List<PngChunk> chunks = readChunks(byteSource, new ChunkType[] { ChunkType.iTXt }, false); diff --git a/src/main/java/org/apache/commons/imaging/formats/png/PngImagingParameters.java b/src/main/java/org/apache/commons/imaging/formats/png/PngImagingParameters.java index 3fdcc07..5c462b1 100644 --- a/src/main/java/org/apache/commons/imaging/formats/png/PngImagingParameters.java +++ b/src/main/java/org/apache/commons/imaging/formats/png/PngImagingParameters.java @@ -18,6 +18,7 @@ package org.apache.commons.imaging.formats.png; import java.util.Collections; import java.util.List; +import org.apache.commons.imaging.ImageFormats; import org.apache.commons.imaging.common.XmpImagingParameters; /** @@ -51,7 +52,11 @@ public class PngImagingParameters extends XmpImagingParameters { * * <p>Valid values: a list of WriteTexts.</p> */ - private List<PngText> textChunks = null; + private List<? extends PngText> textChunks = null; + + public PngImagingParameters() { + setImageFormat(ImageFormats.PNG); + } public byte getBitDepth() { return bitDepth; @@ -85,11 +90,11 @@ public class PngImagingParameters extends XmpImagingParameters { this.physicalScale = physicalScale; } - public List<PngText> getTextChunks() { - return Collections.unmodifiableList(textChunks); + public List<? extends PngText> getTextChunks() { + return textChunks != null ? Collections.unmodifiableList(textChunks) : null; } - public void setTextChunks(List<PngText> textChunks) { + public void setTextChunks(List<? extends PngText> textChunks) { this.textChunks = textChunks; } } diff --git a/src/main/java/org/apache/commons/imaging/formats/png/PngWriter.java b/src/main/java/org/apache/commons/imaging/formats/png/PngWriter.java index ca32993..a2dac83 100644 --- a/src/main/java/org/apache/commons/imaging/formats/png/PngWriter.java +++ b/src/main/java/org/apache/commons/imaging/formats/png/PngWriter.java @@ -441,7 +441,7 @@ class PngWriter { writeChunkXmpiTXt(os, xmpXml); } - final List<PngText> outputTexts = params.getTextChunks(); + final List<? extends PngText> outputTexts = params.getTextChunks(); if (outputTexts != null) { for (final PngText text : outputTexts) { if (text instanceof PngText.Text) { diff --git a/src/main/java/org/apache/commons/imaging/formats/pnm/PnmImageParser.java b/src/main/java/org/apache/commons/imaging/formats/pnm/PnmImageParser.java index 5dc2577..c51f581 100644 --- a/src/main/java/org/apache/commons/imaging/formats/pnm/PnmImageParser.java +++ b/src/main/java/org/apache/commons/imaging/formats/pnm/PnmImageParser.java @@ -44,9 +44,6 @@ public class PnmImageParser extends ImageParser<PnmImagingParameters> { private static final String DEFAULT_EXTENSION = ".pnm"; private static final String[] ACCEPTED_EXTENSIONS = { ".pbm", ".pgm", ".ppm", ".pnm", ".pam" }; - public static final String PARAM_KEY_PNM_RAWBITS = "PNM_RAWBITS"; - public static final String PARAM_VALUE_PNM_RAWBITS_YES = "YES"; - public static final String PARAM_VALUE_PNM_RAWBITS_NO = "NO"; public PnmImageParser() { super.setByteOrder(ByteOrder.LITTLE_ENDIAN); diff --git a/src/main/java/org/apache/commons/imaging/formats/pnm/PnmImagingParameters.java b/src/main/java/org/apache/commons/imaging/formats/pnm/PnmImagingParameters.java index 68f1e7c..927855e 100644 --- a/src/main/java/org/apache/commons/imaging/formats/pnm/PnmImagingParameters.java +++ b/src/main/java/org/apache/commons/imaging/formats/pnm/PnmImagingParameters.java @@ -31,6 +31,10 @@ public class PnmImagingParameters extends ImagingParameters { */ private ImageFormats subtype = null; + public PnmImagingParameters() { + setImageFormat(ImageFormats.PNM); + } + public boolean isRawBits() { return rawBits; } diff --git a/src/main/java/org/apache/commons/imaging/formats/psd/PsdImageParser.java b/src/main/java/org/apache/commons/imaging/formats/psd/PsdImageParser.java index 56c439d..8267470 100644 --- a/src/main/java/org/apache/commons/imaging/formats/psd/PsdImageParser.java +++ b/src/main/java/org/apache/commons/imaging/formats/psd/PsdImageParser.java @@ -41,6 +41,7 @@ import org.apache.commons.imaging.ImageParser; import org.apache.commons.imaging.ImageReadException; import org.apache.commons.imaging.common.ImageMetadata; import org.apache.commons.imaging.common.XmpEmbeddable; +import org.apache.commons.imaging.common.XmpImagingParameters; import org.apache.commons.imaging.common.bytesource.ByteSource; import org.apache.commons.imaging.formats.psd.dataparsers.DataParser; import org.apache.commons.imaging.formats.psd.dataparsers.DataParserBitmap; @@ -53,7 +54,7 @@ import org.apache.commons.imaging.formats.psd.datareaders.CompressedDataReader; import org.apache.commons.imaging.formats.psd.datareaders.DataReader; import org.apache.commons.imaging.formats.psd.datareaders.UncompressedDataReader; -public class PsdImageParser extends ImageParser<PsdImagingParameters> implements XmpEmbeddable<PsdImagingParameters> { +public class PsdImageParser extends ImageParser<PsdImagingParameters> implements XmpEmbeddable { private static final String DEFAULT_EXTENSION = ".psd"; private static final String[] ACCEPTED_EXTENSIONS = { DEFAULT_EXTENSION, }; private static final int PSD_SECTION_HEADER = 0; @@ -656,7 +657,7 @@ public class PsdImageParser extends ImageParser<PsdImagingParameters> implements * @return Xmp Xml as String, if present. Otherwise, returns null. */ @Override - public String getXmpXml(final ByteSource byteSource, final PsdImagingParameters params) + public String getXmpXml(final ByteSource byteSource, final XmpImagingParameters params) throws ImageReadException, IOException { final PsdImageContents imageContents = readImageContents(byteSource); diff --git a/src/main/java/org/apache/commons/imaging/formats/psd/PsdImagingParameters.java b/src/main/java/org/apache/commons/imaging/formats/psd/PsdImagingParameters.java index 306069f..761892a 100644 --- a/src/main/java/org/apache/commons/imaging/formats/psd/PsdImagingParameters.java +++ b/src/main/java/org/apache/commons/imaging/formats/psd/PsdImagingParameters.java @@ -17,6 +17,7 @@ package org.apache.commons.imaging.formats.psd; +import org.apache.commons.imaging.ImageFormats; import org.apache.commons.imaging.ImagingParameters; /** @@ -25,4 +26,7 @@ import org.apache.commons.imaging.ImagingParameters; */ public class PsdImagingParameters extends ImagingParameters { + public PsdImagingParameters() { + setImageFormat(ImageFormats.PSD); + } } diff --git a/src/main/java/org/apache/commons/imaging/formats/rgbe/RgbeImagingParameters.java b/src/main/java/org/apache/commons/imaging/formats/rgbe/RgbeImagingParameters.java index 9d1f6eb..3575820 100644 --- a/src/main/java/org/apache/commons/imaging/formats/rgbe/RgbeImagingParameters.java +++ b/src/main/java/org/apache/commons/imaging/formats/rgbe/RgbeImagingParameters.java @@ -15,6 +15,7 @@ package org.apache.commons.imaging.formats.rgbe; +import org.apache.commons.imaging.ImageFormats; import org.apache.commons.imaging.ImagingParameters; /** @@ -23,4 +24,7 @@ import org.apache.commons.imaging.ImagingParameters; */ public class RgbeImagingParameters extends ImagingParameters { + public RgbeImagingParameters() { + setImageFormat(ImageFormats.RGBE); + } } diff --git a/src/main/java/org/apache/commons/imaging/formats/tiff/TiffImageParser.java b/src/main/java/org/apache/commons/imaging/formats/tiff/TiffImageParser.java index 308362a..ee2c7f4 100644 --- a/src/main/java/org/apache/commons/imaging/formats/tiff/TiffImageParser.java +++ b/src/main/java/org/apache/commons/imaging/formats/tiff/TiffImageParser.java @@ -47,6 +47,7 @@ import org.apache.commons.imaging.ImageWriteException; import org.apache.commons.imaging.common.ImageBuilder; import org.apache.commons.imaging.common.ImageMetadata; import org.apache.commons.imaging.common.XmpEmbeddable; +import org.apache.commons.imaging.common.XmpImagingParameters; import org.apache.commons.imaging.common.bytesource.ByteSource; import org.apache.commons.imaging.formats.tiff.TiffDirectory.ImageDataElement; import org.apache.commons.imaging.formats.tiff.constants.TiffEpTagConstants; @@ -63,7 +64,7 @@ import org.apache.commons.imaging.formats.tiff.photometricinterpreters.Photometr import org.apache.commons.imaging.formats.tiff.photometricinterpreters.PhotometricInterpreterYCbCr; import org.apache.commons.imaging.formats.tiff.write.TiffImageWriterLossy; -public class TiffImageParser extends ImageParser<TiffImagingParameters> implements XmpEmbeddable<TiffImagingParameters> { +public class TiffImageParser extends ImageParser<TiffImagingParameters> implements XmpEmbeddable { private static final String DEFAULT_EXTENSION = ".tif"; private static final String[] ACCEPTED_EXTENSIONS = { ".tif", ".tiff", }; @@ -91,9 +92,10 @@ public class TiffImageParser extends ImageParser<TiffImagingParameters> implemen @Override public byte[] getICCProfileBytes(final ByteSource byteSource, final TiffImagingParameters params) throws ImageReadException, IOException { + final FormatCompliance formatCompliance = FormatCompliance.getDefault(); - final TiffContents contents = new TiffReader(isStrict(params)).readFirstDirectory( - byteSource, params, false, formatCompliance); + final TiffContents contents = new TiffReader(params != null ? params.isStrict() : false).readFirstDirectory( + byteSource, false, formatCompliance); final TiffDirectory directory = contents.directories.get(0); return directory.getFieldValue(TiffEpTagConstants.EXIF_TAG_INTER_COLOR_PROFILE, @@ -104,8 +106,8 @@ public class TiffImageParser extends ImageParser<TiffImagingParameters> implemen public Dimension getImageSize(final ByteSource byteSource, final TiffImagingParameters params) throws ImageReadException, IOException { final FormatCompliance formatCompliance = FormatCompliance.getDefault(); - final TiffContents contents = new TiffReader(isStrict(params)).readFirstDirectory( - byteSource, params, false, formatCompliance); + final TiffContents contents = new TiffReader(params != null ? params.isStrict() : false) + .readFirstDirectory(byteSource, false, formatCompliance); final TiffDirectory directory = contents.directories.get(0); final TiffField widthField = directory.findField( @@ -124,12 +126,14 @@ public class TiffImageParser extends ImageParser<TiffImagingParameters> implemen } @Override - public ImageMetadata getMetadata(final ByteSource byteSource, final TiffImagingParameters params) + public ImageMetadata getMetadata(final ByteSource byteSource, TiffImagingParameters params) throws ImageReadException, IOException { + if (params == null) { + params = new TiffImagingParameters(); + } final FormatCompliance formatCompliance = FormatCompliance.getDefault(); final TiffReader tiffReader = new TiffReader(params.isStrict()); - final TiffContents contents = tiffReader.readContents(byteSource, params, - formatCompliance); + final TiffContents contents = tiffReader.readContents(byteSource, params, formatCompliance); final List<TiffDirectory> directories = contents.directories; @@ -155,7 +159,7 @@ public class TiffImageParser extends ImageParser<TiffImagingParameters> implemen public ImageInfo getImageInfo(final ByteSource byteSource, final TiffImagingParameters params) throws ImageReadException, IOException { final FormatCompliance formatCompliance = FormatCompliance.getDefault(); - final TiffContents contents = new TiffReader(isStrict(params)).readDirectories( + final TiffContents contents = new TiffReader(params != null ? params.isStrict() : false).readDirectories( byteSource, false, formatCompliance); final TiffDirectory directory = contents.directories.get(0); @@ -309,7 +313,7 @@ public class TiffImageParser extends ImageParser<TiffImagingParameters> implemen } @Override - public String getXmpXml(final ByteSource byteSource, final TiffImagingParameters params) + public String getXmpXml(final ByteSource byteSource, final XmpImagingParameters params) throws ImageReadException, IOException { final FormatCompliance formatCompliance = FormatCompliance.getDefault(); final TiffContents contents = new TiffReader(isStrict(params)).readDirectories( @@ -396,7 +400,7 @@ public class TiffImageParser extends ImageParser<TiffImagingParameters> implemen public List<byte[]> collectRawImageData(final ByteSource byteSource, final TiffImagingParameters params) throws ImageReadException, IOException { final FormatCompliance formatCompliance = FormatCompliance.getDefault(); - final TiffContents contents = new TiffReader(params.isStrict()).readDirectories( + final TiffContents contents = new TiffReader(params != null ? params.isStrict() : false).readDirectories( byteSource, true, formatCompliance); final List<byte[]> result = new ArrayList<>(); @@ -452,12 +456,14 @@ public class TiffImageParser extends ImageParser<TiffImagingParameters> implemen * access operation. */ @Override - public BufferedImage getBufferedImage(final ByteSource byteSource, final TiffImagingParameters params) + public BufferedImage getBufferedImage(final ByteSource byteSource, TiffImagingParameters params) throws ImageReadException, IOException { + if (params == null) { + params = new TiffImagingParameters(); + } final FormatCompliance formatCompliance = FormatCompliance.getDefault(); - final TiffReader reader = new TiffReader(isStrict(params)); - final TiffContents contents = reader.readFirstDirectory(byteSource, params, - true, formatCompliance); + final TiffReader reader = new TiffReader(params.isStrict()); + final TiffContents contents = reader.readFirstDirectory(byteSource, true, formatCompliance); final ByteOrder byteOrder = reader.getByteOrder(); final TiffDirectory directory = contents.directories.get(0); final BufferedImage result = directory.getTiffImage(byteOrder, params); @@ -751,8 +757,11 @@ public class TiffImageParser extends ImageParser<TiffImagingParameters> implemen } @Override - public void writeImage(final BufferedImage src, final OutputStream os, final TiffImagingParameters params) + public void writeImage(final BufferedImage src, final OutputStream os, TiffImagingParameters params) throws ImageWriteException, IOException { + if (params == null) { + params = new TiffImagingParameters(); + } new TiffImageWriterLossy().writeImage(src, os, params); } diff --git a/src/main/java/org/apache/commons/imaging/formats/tiff/TiffImagingParameters.java b/src/main/java/org/apache/commons/imaging/formats/tiff/TiffImagingParameters.java index b61bfde..54c0047 100644 --- a/src/main/java/org/apache/commons/imaging/formats/tiff/TiffImagingParameters.java +++ b/src/main/java/org/apache/commons/imaging/formats/tiff/TiffImagingParameters.java @@ -15,6 +15,7 @@ package org.apache.commons.imaging.formats.tiff; +import org.apache.commons.imaging.ImageFormats; import org.apache.commons.imaging.common.XmpImagingParameters; import org.apache.commons.imaging.formats.tiff.photometricinterpreters.PhotometricInterpreter; import org.apache.commons.imaging.formats.tiff.write.TiffOutputSet; @@ -98,6 +99,10 @@ public class TiffImagingParameters extends XmpImagingParameters { */ private Integer t6Options = null; + public TiffImagingParameters() { + setImageFormat(ImageFormats.TIFF); + } + public boolean isReadThumbnails() { return readThumbnails; } diff --git a/src/main/java/org/apache/commons/imaging/formats/tiff/TiffReader.java b/src/main/java/org/apache/commons/imaging/formats/tiff/TiffReader.java index b312032..8bca029 100644 --- a/src/main/java/org/apache/commons/imaging/formats/tiff/TiffReader.java +++ b/src/main/java/org/apache/commons/imaging/formats/tiff/TiffReader.java @@ -288,7 +288,7 @@ public class TiffReader extends BinaryFileParser { private final boolean readThumbnails; Collector() { - this(null); + this(new TiffImagingParameters()); } Collector(final TiffImagingParameters params) { @@ -367,11 +367,10 @@ public class TiffReader extends BinaryFileParser { // } // } - public TiffContents readFirstDirectory(final ByteSource byteSource, final TiffImagingParameters params, - final boolean readImageData, final FormatCompliance formatCompliance) + public TiffContents readFirstDirectory(final ByteSource byteSource, final boolean readImageData, final FormatCompliance formatCompliance) throws ImageReadException, IOException { final Collector collector = new FirstDirectoryCollector(readImageData); - read(byteSource, params, formatCompliance, collector); + read(byteSource, formatCompliance, collector); final TiffContents contents = collector.getContents(); if (contents.directories.isEmpty()) { throw new ImageReadException( @@ -400,14 +399,12 @@ public class TiffReader extends BinaryFileParser { IOException { final Collector collector = new Collector(params); - read(byteSource, params, formatCompliance, collector); + read(byteSource, formatCompliance, collector); return collector.getContents(); } - public void read(final ByteSource byteSource, final TiffImagingParameters params, - final FormatCompliance formatCompliance, final Listener listener) + public void read(final ByteSource byteSource, final FormatCompliance formatCompliance, final Listener listener) throws ImageReadException, IOException { - // TiffContents contents = readDirectories(byteSource, formatCompliance, listener); } diff --git a/src/main/java/org/apache/commons/imaging/formats/wbmp/WbmpImagingParameters.java b/src/main/java/org/apache/commons/imaging/formats/wbmp/WbmpImagingParameters.java index 00af50d..d48c463 100644 --- a/src/main/java/org/apache/commons/imaging/formats/wbmp/WbmpImagingParameters.java +++ b/src/main/java/org/apache/commons/imaging/formats/wbmp/WbmpImagingParameters.java @@ -15,6 +15,7 @@ package org.apache.commons.imaging.formats.wbmp; +import org.apache.commons.imaging.ImageFormats; import org.apache.commons.imaging.ImagingParameters; /** @@ -23,4 +24,7 @@ import org.apache.commons.imaging.ImagingParameters; */ public class WbmpImagingParameters extends ImagingParameters { + public WbmpImagingParameters() { + setImageFormat(ImageFormats.WBMP); + } } diff --git a/src/main/java/org/apache/commons/imaging/formats/xbm/XbmImagingParameters.java b/src/main/java/org/apache/commons/imaging/formats/xbm/XbmImagingParameters.java index a86d539..dd96268 100644 --- a/src/main/java/org/apache/commons/imaging/formats/xbm/XbmImagingParameters.java +++ b/src/main/java/org/apache/commons/imaging/formats/xbm/XbmImagingParameters.java @@ -15,6 +15,7 @@ package org.apache.commons.imaging.formats.xbm; +import org.apache.commons.imaging.ImageFormats; import org.apache.commons.imaging.ImagingParameters; /** @@ -23,4 +24,7 @@ import org.apache.commons.imaging.ImagingParameters; */ public class XbmImagingParameters extends ImagingParameters { + public XbmImagingParameters() { + setImageFormat(ImageFormats.XBM); + } } diff --git a/src/main/java/org/apache/commons/imaging/formats/xpm/XpmImagingParameters.java b/src/main/java/org/apache/commons/imaging/formats/xpm/XpmImagingParameters.java index 36be857..f47c83c 100644 --- a/src/main/java/org/apache/commons/imaging/formats/xpm/XpmImagingParameters.java +++ b/src/main/java/org/apache/commons/imaging/formats/xpm/XpmImagingParameters.java @@ -14,10 +14,17 @@ package org.apache.commons.imaging.formats.xpm; +import org.apache.commons.imaging.ImageFormats; import org.apache.commons.imaging.ImagingParameters; /** * Xpm format parameters. * @since 1.0-alpha3 */ -public class XpmImagingParameters extends ImagingParameters {} +public class XpmImagingParameters extends ImagingParameters { + + public XpmImagingParameters() { + setImageFormat(ImageFormats.XPM); + } + +}