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: * Changes 36: * ------- 37: * 01-Aug-2004 : Initial version (RA); 38: * 02-Feb-2007 : Removed author tags all over JFreeChart sources (DG); 39: * 40: */ 41: 42: package org.jfree.chart.encoders; 43: 44: import java.awt.image.BufferedImage; 45: import java.io.IOException; 46: import java.io.OutputStream; 47: 48: import com.keypoint.PngEncoder; 49: 50: /** 51: * Adapter class for the Keypoint PNG Encoder. The ImageEncoderFactory will 52: * only return a reference to this class by default if the library has been 53: * compiled under a JDK < 1.4 or is being run using a JDK < 1.4. 54: */ 55: public class KeypointPNGEncoderAdapter implements ImageEncoder { 56: 57: /** The quality setting. */ 58: private int quality = 9; 59: 60: /** Encode alpha? */ 61: private boolean encodingAlpha = false; 62: 63: /** 64: * Get the quality of the image encoding. The underlying encoder uses int 65: * values: 0 for no compression, and values 1 through 9 for various levels 66: * of compression (1 is best speed, 9 is best compression). 67: * 68: * @return A float representing the quality. 69: */ 70: public float getQuality() { 71: return this.quality; 72: } 73: 74: /** 75: * Set the quality of the image encoding (supported). The underlying 76: * encoder uses int values: 0 for no compression, and values 1 through 9 77: * for various levels of compression (1 is best speed, 9 is best 78: * compression). 79: * 80: * @param quality A float representing the quality. 81: */ 82: public void setQuality(float quality) { 83: this.quality = (int) quality; 84: } 85: 86: /** 87: * Get whether the encoder should encode alpha transparency. 88: * 89: * @return Whether the encoder is encoding alpha transparency. 90: */ 91: public boolean isEncodingAlpha() { 92: return this.encodingAlpha; 93: } 94: 95: /** 96: * Set whether the encoder should encode alpha transparency (supported). 97: * 98: * @param encodingAlpha Whether the encoder should encode alpha 99: * transparency. 100: */ 101: public void setEncodingAlpha(boolean encodingAlpha) { 102: this.encodingAlpha = encodingAlpha; 103: } 104: 105: /** 106: * Encodes an image in PNG format. 107: * 108: * @param bufferedImage The image to be encoded. 109: * @return The byte[] that is the encoded image. 110: * @throws IOException 111: */ 112: public byte[] encode(BufferedImage bufferedImage) throws IOException { 113: if (bufferedImage == null) { 114: throw new IllegalArgumentException("Null 'image' argument."); 115: } 116: PngEncoder encoder = new PngEncoder(bufferedImage, this.encodingAlpha, 117: 0, this.quality); 118: return encoder.pngEncode(); 119: } 120: 121: /** 122: * Encodes an image in PNG format and writes it to an 123: * <code>OutputStream</code>. 124: * 125: * @param bufferedImage The image to be encoded. 126: * @param outputStream The OutputStream to write the encoded image to. 127: * @throws IOException 128: */ 129: public void encode(BufferedImage bufferedImage, OutputStream outputStream) 130: throws IOException { 131: if (bufferedImage == null) { 132: throw new IllegalArgumentException("Null 'image' argument."); 133: } 134: if (outputStream == null) { 135: throw new IllegalArgumentException("Null 'outputStream' argument."); 136: } 137: PngEncoder encoder = new PngEncoder(bufferedImage, this.encodingAlpha, 138: 0, this.quality); 139: outputStream.write(encoder.pngEncode()); 140: } 141: 142: }