Frames | No Frames |
1: /* =========================================================== 2: * JFreeChart : a free chart library for the Java(tm) platform 3: * =========================================================== 4: * 5: * (C) Copyright 2000-2007, by Object Refinery Limited and Contributors. 6: * 7: * Project Info: http://www.jfree.org/jfreechart/index.html 8: * 9: * This library is free software; you can redistribute it and/or modify it 10: * under the terms of the GNU Lesser General Public License as published by 11: * the Free Software Foundation; either version 2.1 of the License, or 12: * (at your option) any later version. 13: * 14: * This library is distributed in the hope that it will be useful, but 15: * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 16: * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public 17: * License for more details. 18: * 19: * You should have received a copy of the GNU Lesser General Public 20: * License along with this library; if not, write to the Free Software 21: * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 22: * USA. 23: * 24: * [Java is a trademark or registered trademark of Sun Microsystems, Inc. 25: * in the United States and other countries.] 26: * 27: * ------------------------------ 28: * KeypointPNGEncoderAdapter.java 29: * ------------------------------ 30: * (C) Copyright 2004, 2007, by Richard Atkinson and Contributors. 31: * 32: * Original Author: Richard Atkinson; 33: * Contributor(s): -; 34: * 35: * $Id: KeypointPNGEncoderAdapter.java,v 1.4.2.3 2007/02/02 14:51:22 mungady Exp $ 36: * 37: * Changes 38: * ------- 39: * 01-Aug-2004 : Initial version (RA); 40: * 02-Feb-2007 : Removed author tags all over JFreeChart sources (DG); 41: * 42: */ 43: 44: package org.jfree.chart.encoders; 45: 46: import com.keypoint.PngEncoder; 47: 48: import java.awt.image.BufferedImage; 49: import java.io.IOException; 50: import java.io.OutputStream; 51: 52: /** 53: * Adapter class for the Keypoint PNG Encoder. The ImageEncoderFactory will 54: * only return a reference to this class by default if the library has been 55: * compiled under a JDK < 1.4 or is being run using a JDK < 1.4. 56: */ 57: public class KeypointPNGEncoderAdapter implements ImageEncoder { 58: private int quality = 9; 59: private boolean encodingAlpha = false; 60: 61: /** 62: * Get the quality of the image encoding. The underlying encoder uses int 63: * values: 0 for no compression, and values 1 through 9 for various levels 64: * of compression (1 is best speed, 9 is best compression). 65: * 66: * @return A float representing the quality. 67: */ 68: public float getQuality() { 69: return this.quality; 70: } 71: 72: /** 73: * Set the quality of the image encoding (supported). The underlying 74: * encoder uses int values: 0 for no compression, and values 1 through 9 75: * for various levels of compression (1 is best speed, 9 is best 76: * compression). 77: * 78: * @param quality A float representing the quality. 79: */ 80: public void setQuality(float quality) { 81: this.quality = (int) quality; 82: } 83: 84: /** 85: * Get whether the encoder should encode alpha transparency. 86: * 87: * @return Whether the encoder is encoding alpha transparency. 88: */ 89: public boolean isEncodingAlpha() { 90: return this.encodingAlpha; 91: } 92: 93: /** 94: * Set whether the encoder should encode alpha transparency (supported). 95: * 96: * @param encodingAlpha Whether the encoder should encode alpha 97: * transparency. 98: */ 99: public void setEncodingAlpha(boolean encodingAlpha) { 100: this.encodingAlpha = encodingAlpha; 101: } 102: 103: /** 104: * Encodes an image in PNG format. 105: * 106: * @param bufferedImage The image to be encoded. 107: * @return The byte[] that is the encoded image. 108: * @throws IOException 109: */ 110: public byte[] encode(BufferedImage bufferedImage) throws IOException { 111: if (bufferedImage == null) { 112: throw new IllegalArgumentException("Null 'image' argument."); 113: } 114: PngEncoder encoder = new PngEncoder(bufferedImage, this.encodingAlpha, 115: 0, this.quality); 116: return encoder.pngEncode(); 117: } 118: 119: /** 120: * Encodes an image in PNG format and writes it to an 121: * <code>OutputStream</code>. 122: * 123: * @param bufferedImage The image to be encoded. 124: * @param outputStream The OutputStream to write the encoded image to. 125: * @throws IOException 126: */ 127: public void encode(BufferedImage bufferedImage, OutputStream outputStream) 128: throws IOException { 129: if (bufferedImage == null) { 130: throw new IllegalArgumentException("Null 'image' argument."); 131: } 132: if (outputStream == null) { 133: throw new IllegalArgumentException("Null 'outputStream' argument."); 134: } 135: PngEncoder encoder = new PngEncoder(bufferedImage, this.encodingAlpha, 136: 0, this.quality); 137: outputStream.write(encoder.pngEncode()); 138: } 139: 140: }