From 27bc77fc57e461c92888043190f70f7e12837ab5 Mon Sep 17 00:00:00 2001 From: timmolter <tim.molter@gmail.com> Date: Sat, 22 Sep 2012 21:12:56 +0200 Subject: [PATCH] added jpeg saving --- .../java/com/xeiam/xchart/BitmapEncoder.java | 52 ++++++++++++++++--- 1 file changed, 45 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/xeiam/xchart/BitmapEncoder.java b/src/main/java/com/xeiam/xchart/BitmapEncoder.java index 39c1fa5b..8ee8fab6 100644 --- a/src/main/java/com/xeiam/xchart/BitmapEncoder.java +++ b/src/main/java/com/xeiam/xchart/BitmapEncoder.java @@ -17,13 +17,22 @@ package com.xeiam.xchart; import java.awt.Graphics2D; import java.awt.image.BufferedImage; +import java.io.File; +import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; +import java.util.Iterator; +import javax.imageio.IIOImage; import javax.imageio.ImageIO; +import javax.imageio.ImageWriteParam; +import javax.imageio.ImageWriter; +import javax.imageio.stream.FileImageOutputStream; /** + * A helper class with static methods for saving Charts as bitmaps + * * @author timmolter */ public class BitmapEncoder { @@ -36,22 +45,51 @@ public class BitmapEncoder { } /** - * Saves a chart as a PNG file + * Save a Chart as a PNG file * * @param chart - * @param pFileName + * @param fileName * @throws IOException */ - public static void savePNG(Chart chart, String pFileName) throws IOException { + public static void savePNG(Chart chart, String fileName) throws IOException { - BufferedImage lBufferedImage = new BufferedImage(chart.width, chart.height, BufferedImage.TYPE_INT_RGB); - Graphics2D lGraphics2D = lBufferedImage.createGraphics(); + BufferedImage bufferedImage = new BufferedImage(chart.width, chart.height, BufferedImage.TYPE_INT_RGB); + Graphics2D lGraphics2D = bufferedImage.createGraphics(); chart.paint(lGraphics2D); // Save chart as PNG - OutputStream out = new FileOutputStream(pFileName); - ImageIO.write(lBufferedImage, "png", out); + OutputStream out = new FileOutputStream(fileName); + ImageIO.write(bufferedImage, "png", out); out.close(); } + /** + * Save a Chart as a JPEG file + * + * @param chart + * @param fileName + * @param quality - // a float between 0 and 1 (1 = maximum quality) + * @throws FileNotFoundException + * @throws IOException + */ + public static void saveJPG(Chart chart, String fileName, float quality) throws FileNotFoundException, IOException { + + BufferedImage bufferedImage = new BufferedImage(chart.width, chart.height, BufferedImage.TYPE_INT_RGB); + Graphics2D lGraphics2D = bufferedImage.createGraphics(); + chart.paint(lGraphics2D); + + Iterator<ImageWriter> iter = ImageIO.getImageWritersByFormatName("jpeg"); + ImageWriter writer = iter.next(); + // instantiate an ImageWriteParam object with default compression options + ImageWriteParam iwp = writer.getDefaultWriteParam(); + iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); + iwp.setCompressionQuality(quality); + File file = new File(fileName); + FileImageOutputStream output = new FileImageOutputStream(file); + writer.setOutput(output); + IIOImage image = new IIOImage(bufferedImage, null, null); + writer.write(null, image, iwp); + writer.dispose(); + } + } -- GitLab