001    /*----------------    FILE HEADER  ------------------------------------------
002    
003    This file is part of deegree.
004    Copyright (C) 2001-2006 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    /**
060     * This class offers three methods to encode a <tt>BuffererImage</tt> to
061     * a gif-, tif, bmp, jpeg- or png-image.
062     *
063     * 
064     *
065     * @version $Revision: 1.6 $
066     * @author <a href="mailto:poth@lat-lon.de">Andreas Poth</a>
067     * @author last edited by: $Author: bezema $
068     *
069     * @version 1.0. $Revision: 1.6 $, $Date: 2006/12/07 08:54:14 $
070     * 
071     * @deprecated use @see org.deegree.ogcwebservices.wpvs.utils.ImageUtil instead;
072     *                  this class will be removed end of 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, 
104                                                                                          encodeParam );
105    
106            encoder.encode( img );
107        }
108    
109        /**
110         *
111         *
112         * @param out 
113         * @param img 
114         *
115         * @throws IOException 
116         */
117        public static synchronized void encodePng( OutputStream out, BufferedImage img )
118                                           throws IOException {
119            PNGEncodeParam encodeParam = PNGEncodeParam.getDefaultEncodeParam( img );
120            
121            if ( encodeParam instanceof PNGEncodeParam.Palette ) {
122                PNGEncodeParam.Palette p = (PNGEncodeParam.Palette)encodeParam;       
123                byte[] b = new byte[]{-127};        
124                p.setPaletteTransparency(b);
125            }
126                    
127            com.sun.media.jai.codec.ImageEncoder encoder = 
128                ImageCodec.createImageEncoder("PNG", out, encodeParam);
129            encoder.encode( img.getData(), img.getColorModel() );
130        }
131    
132        /**
133         *
134         *
135         * @param out 
136         * @param img 
137         *
138         * @throws IOException 
139         */
140        public static synchronized void encodeTiff( OutputStream out, BufferedImage img )
141                                            throws IOException {
142            TIFFEncodeParam encodeParam = new TIFFEncodeParam();
143    
144            com.sun.media.jai.codec.ImageEncoder encoder = ImageCodec.createImageEncoder( "TIFF", out, 
145                                                                                          encodeParam );
146    
147            encoder.encode( img );        
148        }
149    
150        /**
151         *
152         *
153         * @param out 
154         * @param img 
155         *
156         * @throws IOException 
157         */
158        public static synchronized void encodeJpeg( OutputStream out, BufferedImage img )
159                                            throws IOException {
160    
161            // encode JPEG
162            JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder( out );
163            com.sun.image.codec.jpeg.JPEGEncodeParam jpegParams = encoder.getDefaultJPEGEncodeParam( 
164                                                                          img );
165            jpegParams.setQuality( 0.95f, false );
166            encoder.setJPEGEncodeParam( jpegParams );
167    
168            encoder.encode( img );
169        }
170    
171        /**
172         *
173         *
174         * @param out 
175         * @param img 
176         * @param quality 
177         *
178         * @throws IOException 
179         */
180        public static synchronized void encodeJpeg( OutputStream out, BufferedImage img, float quality )
181                                            throws IOException {
182    
183            // encode JPEG
184            JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder( out );
185            com.sun.image.codec.jpeg.JPEGEncodeParam jpegParams = encoder.getDefaultJPEGEncodeParam( 
186                                                                          img );
187            jpegParams.setQuality( quality, false );
188            encoder.setJPEGEncodeParam( jpegParams );
189    
190            encoder.encode( img );
191        }
192    }
193    /* ********************************************************************
194    Changes to this class. What the people have been up to:
195    $Log: Encoders.java,v $
196    Revision 1.6  2006/12/07 08:54:14  bezema
197    little javadoc update
198    
199    Revision 1.5  2006/07/11 09:37:16  poth
200    marked class as deprecated
201    
202    
203    ********************************************************************** */