1 34 35 package org.krysalis.jcharts.encoders; 36 37 38 import org.krysalis.jcharts.Chart; 39 import org.krysalis.jcharts.chartData.ChartDataException; 40 import org.krysalis.jcharts.properties.PropertyException; 41 42 import javax.imageio.IIOImage ; 43 import javax.imageio.ImageIO ; 44 import javax.imageio.ImageTypeSpecifier ; 45 import javax.imageio.ImageWriteParam ; 46 import javax.imageio.ImageWriter ; 47 import javax.imageio.plugins.jpeg.JPEGImageWriteParam ; 48 import javax.imageio.stream.ImageOutputStream ; 49 import java.awt.image.BufferedImage ; 50 import java.awt.image.IndexColorModel ; 51 import java.io.IOException ; 52 import java.io.OutputStream ; 53 import java.util.Iterator ; 54 55 56 62 public class JPEGEncoder 63 { 64 65 66 private static final String JPEG = "jpeg"; 67 68 69 static 70 { 71 ImageIO.setUseCache( false ); 73 } 74 75 76 80 private JPEGEncoder() throws Exception 81 { 82 throw new Exception ( "No need to create an instance of this class!" ); 83 } 84 85 86 96 public static void encode( Chart chart, 97 float quality, 98 OutputStream outputStream ) throws ChartDataException, PropertyException, IOException 99 { 100 BufferedImage bufferedImage = BinaryEncoderUtil.render( chart ); 101 102 Iterator writers = ImageIO.getImageWritersByFormatName( JPEG ); 103 ImageWriter imageWriter = (ImageWriter ) writers.next(); 104 105 JPEGImageWriteParam params = new JPEGImageWriteParam ( null ); 106 params.setCompressionMode( ImageWriteParam.MODE_EXPLICIT ); 107 params.setCompressionQuality( quality ); 108 params.setProgressiveMode( javax.imageio.ImageWriteParam.MODE_DISABLED ); 109 params.setDestinationType( new ImageTypeSpecifier ( IndexColorModel.getRGBdefault(), 110 IndexColorModel.getRGBdefault().createCompatibleSampleModel( 16, 16 ) ) ); 111 112 ImageOutputStream imageOutputStream = ImageIO.createImageOutputStream( outputStream ); 113 imageWriter.setOutput( imageOutputStream ); 114 imageWriter.write( null, new IIOImage ( bufferedImage, null, null ), params ); 115 116 imageOutputStream.close(); 117 118 imageWriter.dispose(); 119 } 120 } 121 122 123 | Popular Tags |