2D Graphics GUI Java

/**
 * COPYRIGHT. Harry Wu 2010. ALL RIGHTS RESERVED.
 * Project: EasyPhoto
 * Author: Harry Wu 
 * Created On: Jun 28, 2008 5:12:21 PM
 *
 */
//package org.shaitu.easyphoto.util;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.awt.image.ColorModel;
import java.awt.image.IndexColorModel;
import java.awt.image.WritableRaster;
import java.io.File;
import java.util.Iterator;
import java.util.List;
import javax.imageio.IIOImage;
import javax.imageio.ImageIO;
import javax.imageio.ImageTypeSpecifier;
import javax.imageio.ImageWriteParam;
import javax.imageio.ImageWriter;
import javax.imageio.plugins.jpeg.JPEGImageWriteParam;
import javax.imageio.stream.ImageOutputStream;
import javax.swing.ImageIcon;
/**
 * userful methods about image
 * @author harry
 */
public class ImageUtil {
    public final static String JPEG = "jpeg";
    public final static String JPG = "jpg";
    public final static String BMP = "bmp";
    public final static String PNG = "png";
    public final static String GIF = "gif";
    public final static String TIFF = "tiff";
    public final static String TIF = "tif";
    /**
     * store BufferedImage to file and then retrieve to BufferedImage
     * @param image BufferedImage
     * @param outputFile output image file
     * @param quality quality of output image
     * @return retrieve stored image
     */
    public static BufferedImage storeAndRetrieveImage(BufferedImage image,File outputFile,float quality){
        try{
            if(storeImage(image,outputFile,quality)){
                    return ImageIO.read(outputFile);
            }
        }catch(Exception e){
            e.printStackTrace();
        }
        return null;
    }
    /**
     * store BufferedImage to file
     * @param image BufferedImage
     * @param outputFile output image file
     * @param quality quality of output image
     * @return true success, else fail
     */
    public static boolean storeImage(BufferedImage image,File outputFile,float quality){
    try {
      //reconstruct folder structure for image file output
      if(outputFile.getParentFile() != null && !outputFile.getParentFile().exists()){
        outputFile.getParentFile().mkdirs();
      }
            if(outputFile.exists()){
                outputFile.delete();
            }
      //get image file suffix
      String extName = "png";
      //get registry ImageWriter for specified image suffix
      Iterator writers = ImageIO.getImageWritersByFormatName(extName);
      ImageWriter imageWriter = (ImageWriter) writers.next();
      //set image output params
      ImageWriteParam params = new JPEGImageWriteParam(null);
      params.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
      params.setCompressionQuality(quality);
      params
          .setProgressiveMode(javax.imageio.ImageWriteParam.MODE_DISABLED);
      params.setDestinationType(new ImageTypeSpecifier(IndexColorModel
          .getRGBdefault(), IndexColorModel.getRGBdefault()
          .createCompatibleSampleModel(16, 16)));
      //writer image to file
      ImageOutputStream imageOutputStream = ImageIO
          .createImageOutputStream(outputFile);
      imageWriter.setOutput(imageOutputStream);
      imageWriter.write(null, new IIOImage(image, null, null), params);
      imageOutputStream.close();
      imageWriter.dispose();
      return true;
    } catch (Exception e) {
      e.printStackTrace();
    }
    return false;
    }
}