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";
    
    /**
     * get fixing preview image rsize 
     * Exif not apply: calculate by formula: iHeight/iWidth*rsize < (lbHeight-10)
     * Exif apply: calculate by formula: iHeight/iWidth*rsize < (lbHeight-80-10)
     * @param imageFile
     * @param lbWidth
     * @param lbHeight
     * @param applyExif
     * @return
     */
    public static int getFixedPreviewSize(File imageFile, int lbHeight, boolean applyExif){
      int rsize = 0;
      ImageIcon image = new ImageIcon(imageFile.getPath());
      int iHeight = image.getIconHeight();
      int iWidth = image.getIconWidth();
      image = null;
      if(iHeight > iWidth){
        if(!applyExif){
            rsize = lbHeight-10;
        } else {
          rsize = lbHeight-90;
        }
      } else {
        if(!applyExif){
          rsize = (lbHeight-10)*iWidth/iHeight;
        } else {
          rsize = (lbHeight-90)*iWidth/iHeight;
        }
      }
      return rsize;
    }
}