001    /*----------------    FILE HEADER  ------------------------------------------
002    
003     This file is part of deegree.
004     Copyright (C) 2001-2008 by:
005     EXSE, Department of Geography, University of Bonn
006     http://www.giub.uni-bonn.de/deegree/
007     lat/lon GmbH
008     http://www.lat-lon.de
009    
010     This library is free software; you can redistribute it and/or
011     modify it under the terms of the GNU Lesser General Public
012     License as published by the Free Software Foundation; either
013     version 2.1 of the License, or (at your option) any later version.
014    
015     This library is distributed in the hope that it will be useful,
016     but WITHOUT ANY WARRANTY; without even the implied warranty of
017     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
018     Lesser General Public License for more details.
019    
020     You should have received a copy of the GNU Lesser General Public
021     License along with this library; if not, write to the Free Software
022     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
023    
024     Contact:
025    
026     Andreas Poth
027     lat/lon GmbH
028     Aennchenstr. 19
029     53115 Bonn
030     Germany
031     E-Mail: poth@lat-lon.de
032    
033     Prof. Dr. Klaus Greve
034     Department of Geography
035     University of Bonn
036     Meckenheimer Allee 166
037     53115 Bonn 
038     Germany
039     E-Mail: greve@giub.uni-bonn.de
040    
041     
042     ---------------------------------------------------------------------------*/
043    package org.deegree.graphics;
044    
045    import java.awt.image.BufferedImage;
046    import java.io.IOException;
047    import java.io.OutputStream;
048    
049    import Acme.JPM.Encoders.GifEncoder;
050    
051    import com.sun.image.codec.jpeg.JPEGCodec;
052    import com.sun.image.codec.jpeg.JPEGImageEncoder;
053    import com.sun.media.jai.codec.BMPEncodeParam;
054    import com.sun.media.jai.codec.ImageCodec;
055    import com.sun.media.jai.codec.PNGEncodeParam;
056    import com.sun.media.jai.codec.TIFFEncodeParam;
057    
058    /**
059     * This class offers three methods to encode a <tt>BuffererImage</tt> to a gif-, tif, bmp, jpeg-
060     * or png-image.
061     * 
062     * 
063     * 
064     * @version $Revision: 1.6 $
065     * @author <a href="mailto:poth@lat-lon.de">Andreas Poth</a>
066     * @author last edited by: $Author: bezema $
067     * 
068     * @version 1.0. $Revision: 1.6 $, $Date: 2006/12/07 08:54:14 $
069     * 
070     * @deprecated use
071     * @see org.deegree.ogcwebservices.wpvs.utils.ImageUtil instead; this class will be removed end of
072     *      2007
073     * 
074     * @since 2.0
075     */
076    public final class Encoders {
077        /**
078         * 
079         * 
080         * @param out
081         * @param img
082         * 
083         * @throws IOException
084         */
085        public static synchronized void encodeGif( OutputStream out, BufferedImage img )
086                                throws IOException {
087            GifEncoder encoder = new GifEncoder( img, out );
088            encoder.encode();
089        }
090    
091        /**
092         * 
093         * 
094         * @param out
095         * @param img
096         * 
097         * @throws IOException
098         */
099        public static synchronized void encodeBmp( OutputStream out, BufferedImage img )
100                                throws IOException {
101            BMPEncodeParam encodeParam = new BMPEncodeParam();
102    
103            com.sun.media.jai.codec.ImageEncoder encoder = ImageCodec.createImageEncoder( "BMP", out, encodeParam );
104    
105            encoder.encode( img );
106        }
107    
108        /**
109         * 
110         * 
111         * @param out
112         * @param img
113         * 
114         * @throws IOException
115         */
116        public static synchronized void encodePng( OutputStream out, BufferedImage img )
117                                throws IOException {
118            PNGEncodeParam encodeParam = PNGEncodeParam.getDefaultEncodeParam( img );
119    
120            if ( encodeParam instanceof PNGEncodeParam.Palette ) {
121                PNGEncodeParam.Palette p = (PNGEncodeParam.Palette) encodeParam;
122                byte[] b = new byte[] { -127 };
123                p.setPaletteTransparency( b );
124            }
125    
126            com.sun.media.jai.codec.ImageEncoder encoder = ImageCodec.createImageEncoder( "PNG", out, encodeParam );
127            encoder.encode( img.getData(), img.getColorModel() );
128        }
129    
130        /**
131         * 
132         * 
133         * @param out
134         * @param img
135         * 
136         * @throws IOException
137         */
138        public static synchronized void encodeTiff( OutputStream out, BufferedImage img )
139                                throws IOException {
140            TIFFEncodeParam encodeParam = new TIFFEncodeParam();
141    
142            com.sun.media.jai.codec.ImageEncoder encoder = ImageCodec.createImageEncoder( "TIFF", out, encodeParam );
143    
144            encoder.encode( img );
145        }
146    
147        /**
148         * 
149         * 
150         * @param out
151         * @param img
152         * 
153         * @throws IOException
154         */
155        public static synchronized void encodeJpeg( OutputStream out, BufferedImage img )
156                                throws IOException {
157    
158            // encode JPEG
159            JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder( out );
160            com.sun.image.codec.jpeg.JPEGEncodeParam jpegParams = encoder.getDefaultJPEGEncodeParam( img );
161            jpegParams.setQuality( 0.95f, false );
162            encoder.setJPEGEncodeParam( jpegParams );
163    
164            encoder.encode( img );
165        }
166    
167        /**
168         * 
169         * 
170         * @param out
171         * @param img
172         * @param quality
173         * 
174         * @throws IOException
175         */
176        public static synchronized void encodeJpeg( OutputStream out, BufferedImage img, float quality )
177                                throws IOException {
178    
179            // encode JPEG
180            JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder( out );
181            com.sun.image.codec.jpeg.JPEGEncodeParam jpegParams = encoder.getDefaultJPEGEncodeParam( img );
182            jpegParams.setQuality( quality, false );
183            encoder.setJPEGEncodeParam( jpegParams );
184    
185            encoder.encode( img );
186        }
187    }