packagecom.common.util;importjava.awt.Graphics2D;importjava.awt.Image;importjava.awt.RenderingHints;importjava.awt.geom.AffineTransform;importjava.awt.image.BufferedImage;importjava.awt.image.ColorModel;importjava.awt.image.WritableRaster;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.InputStream;importjavax.imageio.ImageIO;importorg.apache.commons.logging.Log;importorg.apache.commons.logging.LogFactory;importorg.eclipse.swt.graphics.Rectangle;importcom.gif4j.GifDecoder;importcom.gif4j.GifEncoder;importcom.gif4j.GifImage;importcom.gif4j.GifTransformer;importcom.sun.image.codec.jpeg.JPEGCodec;importcom.sun.image.codec.jpeg.JPEGImageEncoder;/**图片工具类,完成图片的截取
*
*@authorBeau Virgill*/
public classIamgesResize
{private static Log log = LogFactory.getLog(IamgesResize.class);
BufferedImage bufImage;//原始图片
int width; //缩放的宽度
int height; //缩放的高度
publicIamgesResize()
{//TODO Auto-generated constructor stub
}public IamgesResize(String srcPath, int width, intheight)
{this.width =width;this.height =height;try{this.bufImage = ImageIO.read(newFile(srcPath));
}catch(Exception e)
{
e.printStackTrace();
}
}/**实现图像的等比缩放和缩放后的截取,如果高度的值和宽度一样,则缩放按设置的值缩放 (只控制宽度的大小,高度的值设置不生效(只有高度的值和宽度的一样才生效), 高度自动按比例缩放;如果缩放的图片小于你设置的值则保存原图大小)
*
*@paraminFilePath
* 要缩放图片文件的路径
*@paramoutFilePath
* 缩放后保存图片输出的路径
*@paramwidth
* 要截取宽度
*@paramhight
* 要截取的高度
*@throwsException*/
public static void zoomOutImage(String inFilePath, String outFilePath, int width, int hight, booleansmooth)throwsException
{int maxHight = 500; //设置最大的图片高度;
File file= newFile(inFilePath);
InputStream in= newFileInputStream(file);
File saveFile= newFile(outFilePath);
BufferedImage srcImage=ImageIO.read(in);
String gif= inFilePath.substring(inFilePath.lastIndexOf(".") + 1, inFilePath.length());if ((gif.equals("gif") || gif.equals("GIF")) && smooth == true) //gif动态图片的处理
{
IamgesResize.getGifImage(inFilePath, outFilePath, width, hight,true);
}else{//如果宽度和高度一样 或者图片的规格为 images_120 时不按等