diff --git a/src/main/java/com/xeiam/xchart/BitmapEncoder.java b/src/main/java/com/xeiam/xchart/BitmapEncoder.java
index 39c1fa5b3f7f2fd92e90b9bab3b051d1ebf28145..8ee8fab619cc9a8756ebd014e113ed8e28e26c9b 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();
+  }
+
 }