Package org.geoserver.wps.ppio

Source Code of org.geoserver.wps.ppio.ImagePPIO$JPEGPPIO

/* (c) 2014 Open Source Geospatial Foundation - all rights reserved
* (c) 2001 - 2013 OpenPlans
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/
package org.geoserver.wps.ppio;

import java.awt.image.RenderedImage;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import org.geoserver.wps.WPSException;

import com.sun.media.jai.codec.ImageDecoder;
import com.sun.media.jai.codec.ImageEncoder;
import com.sun.media.jai.codecimpl.JPEGImageDecoder;
import com.sun.media.jai.codecimpl.JPEGImageEncoder;
import com.sun.media.jai.codecimpl.PNGImageDecoder;
import com.sun.media.jai.codecimpl.PNGImageEncoder;

public abstract class ImagePPIO extends BinaryPPIO {

    protected ImagePPIO(final String mimeType) {
        super(RenderedImage.class, RenderedImage.class, mimeType);
    }
   
    public abstract ImageEncoder getEncoder(OutputStream os);
   
    public abstract ImageDecoder getDecoder(InputStream os);
   
    @Override
    public void encode(Object value, OutputStream outputStream) throws Exception {
        RenderedImage renderedImage = (RenderedImage) value;
        ImageEncoder encoder = getEncoder(outputStream);
        encoder.encode(renderedImage);
    }

    @Override
    public Object decode(InputStream inputStream) throws Exception {
        ImageDecoder decoder = getDecoder(inputStream);
        RenderedImage ri = null;
        try {
            ri = decoder.decodeAsRenderedImage();
        } catch (IOException ioe){
            WPSException wpse = new WPSException("Unable to decode the image. Expected an image having mimetype = " + mimeType);
            wpse.initCause(ioe);
            throw wpse;
        }
        return ri;
    }
   
    public static class PNGPPIO extends ImagePPIO {

        public PNGPPIO() {
            super("image/png");
        }

        @Override
        public final ImageEncoder getEncoder(OutputStream outputStream) {
            return new PNGImageEncoder(outputStream, null);
        }

        @Override
        public final ImageDecoder getDecoder(InputStream inputStream) {
            return new PNGImageDecoder(inputStream, null);       
        }
       
        @Override
        public String getFileExtension() {
            return "png";
        }
    }
   
    public static class JPEGPPIO extends ImagePPIO {

        public JPEGPPIO() {
            super("image/jpeg");
        }
       
        @Override
        public final ImageDecoder getDecoder(InputStream inputStream) {
            return new JPEGImageDecoder(inputStream, null);       
        }
       
        @Override
        public ImageEncoder getEncoder(OutputStream outputStream){
            return new JPEGImageEncoder(outputStream, null);
        }
       
        @Override
        public String getFileExtension() {
            return "jpeg";
        }
    }
}
TOP

Related Classes of org.geoserver.wps.ppio.ImagePPIO$JPEGPPIO

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.