/* JP2K Kakadu Image Writer V. 1.0 * * (c) 2008 Quality Nighthawk Teleradiology Group, Inc. * Contact: info@qualitynighthawk.com * * Produced by GeoSolutions, Eng. Daniele Romagnoli and Eng. Simone Giannecchini * GeoSolutions S.A.S. --- Via Carignoni 51, 55041 Camaiore (LU) Italy * Contact: info@geo-solutions.it * * Released under the Gnu Lesser General Public License version 3. * All rights otherwise reserved. * * JP2K Kakadu Image Writer is distributed on an "AS IS" basis, * WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * See the GNU Lesser General Public License version 3 for more details. * http://www.fsf.org/licensing/licenses/lgpl.html */ package it.geosolutions.imageio.plugins.jp2k; import java.io.File; import java.io.IOException; import java.util.Locale; import javax.imageio.ImageTypeSpecifier; import javax.imageio.ImageWriter; import javax.imageio.spi.ImageWriterSpi; import javax.imageio.stream.ImageOutputStream; /** * @author Daniele Romagnoli, GeoSolutions * @author Simone Giannecchini, GeoSolutions */ public class JP2KKakaduImageWriterSpi extends ImageWriterSpi { static final String[] suffixes = { "JP2", "J2C" }; static final String[] formatNames = { "jpeg2000", "jpeg 2000", "JPEG2000", "JPEG 2000", "JP2", "JP2K" }; static final String[] MIMETypes = { "image/jp2" }; static final String version = "1.0"; static final String writerCN = "it.geosolutions.imageio.plugins.jp2k.JP2kKakaduImageWriter"; static final String vendorName = "GeoSolutions"; // ReaderSpiNames static final String[] readerSpiName = { "it.geosolutions.imageio.plugins.jp2k.JP2kKakaduImageReaderSpi" }; // StreamMetadataFormatNames and StreamMetadataFormatClassNames static final boolean supportsStandardStreamMetadataFormat = false; static final String nativeStreamMetadataFormatName = null; static final String nativeStreamMetadataFormatClassName = null; static final String[] extraStreamMetadataFormatNames = null; static final String[] extraStreamMetadataFormatClassNames = null; // ImageMetadataFormatNames and ImageMetadataFormatClassNames static final boolean supportsStandardImageMetadataFormat = false; static final String nativeImageMetadataFormatName = null; static final String nativeImageMetadataFormatClassName = null; static final String[] extraImageMetadataFormatNames = { null }; static final String[] extraImageMetadataFormatClassNames = { null }; static final Class[] OUTPUT_TYPE = { File.class, ImageOutputStream.class }; /** * Default {@link ImageWriterSpi} constructor for JP2K writers. */ public JP2KKakaduImageWriterSpi() { super(vendorName, version, formatNames, suffixes, MIMETypes, writerCN, OUTPUT_TYPE, readerSpiName, supportsStandardStreamMetadataFormat, nativeStreamMetadataFormatName, nativeStreamMetadataFormatClassName, extraStreamMetadataFormatNames, extraStreamMetadataFormatClassNames, supportsStandardImageMetadataFormat, nativeImageMetadataFormatName, nativeImageMetadataFormatClassName, extraImageMetadataFormatNames, extraImageMetadataFormatClassNames); } /** * @see javax.imageio.spi.ImageWriterSpi#createWriterInstance(java.lang.Object) */ public ImageWriter createWriterInstance(Object extension) throws IOException { return new JP2KKakaduImageWriter(this); } /** * @see javax.imageio.spi.IIOServiceProvider#getDescription(java.util.Locale) */ public String getDescription(Locale locale) { return "SPI for JPEG 2000 ImageWriter based on KDU JNI"; } /** * Refine the check if needed. */ public boolean canEncodeImage(ImageTypeSpecifier type) { // final int numBands = type.getNumBands(); // final int numBits = type.getBitsPerBand(0); return true; } }