/* * #%L * BSD implementations of Bio-Formats readers and writers * %% * Copyright (C) 2005 - 2015 Open Microscopy Environment: * - Board of Regents of the University of Wisconsin-Madison * - Glencoe Software, Inc. * - University of Dundee * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * 2. 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. * * 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 HOLDERS 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. * #L% */ package loci.formats.out; import java.awt.Image; import java.awt.image.BufferedImage; import java.io.IOException; import javax.imageio.ImageIO; import loci.formats.FormatException; import loci.formats.FormatTools; import loci.formats.FormatWriter; import loci.formats.gui.AWTImageTools; import loci.formats.meta.MetadataRetrieve; /** * ImageIOWriter is the superclass for file format writers that use the * javax.imageio library. * * @author Curtis Rueden ctrueden at wisc.edu */ public abstract class ImageIOWriter extends FormatWriter { // -- Fields -- protected String kind; // -- Constructors -- /** * Constructs an ImageIO-based writer with the given name, default suffix * and output type (e.g., png, jpeg). */ public ImageIOWriter(String format, String suffix, String kind) { super(format, suffix); this.kind = kind; } /** * Constructs an ImageIO-based writer with the given name, default suffixes * and output type (e.g., png, jpeg). */ public ImageIOWriter(String format, String[] suffixes, String kind) { super(format, suffixes); this.kind = kind; } // -- IFormatWriter API methods -- /** * @see loci.formats.IFormatWriter#saveBytes(int, byte[], int, int, int, int) */ @Override public void saveBytes(int no, byte[] buf, int x, int y, int w, int h) throws FormatException, IOException { checkParams(no, buf, x, y, w, h); MetadataRetrieve meta = getMetadataRetrieve(); BufferedImage image = AWTImageTools.makeImage(buf, interleaved, meta, series); savePlane(no, image, x, y, w, h); } /** * @see loci.formats.IFormatWriter#savePlane(int, Object, int, int, int, int) */ @Override public void savePlane(int no, Object plane, int x, int y, int w, int h) throws FormatException, IOException { if (!(plane instanceof Image)) { throw new IllegalArgumentException( "Object to save must be a java.awt.Image"); } if (!isFullPlane(x, y, w, h)) { throw new FormatException("ImageIOWriter does not support writing tiles"); } BufferedImage img = AWTImageTools.makeBuffered((Image) plane, cm); ImageIO.write(img, kind, out); } /* @see loci.formats.IFormatWriter#getPixelTypes(String) */ @Override public int[] getPixelTypes(String codec) { return new int[] {FormatTools.UINT8, FormatTools.UINT16}; } // -- IFormatHandler API methods -- /* @see loci.formats.IFormatHandler#getNativeDataType() */ @Override public Class<?> getNativeDataType() { return Image.class; } }