packagecom.hengyunsoft.face.util;importjava.awt.Image;importjava.awt.image.BufferedImage;importjava.io.File;importjava.io.FileOutputStream;importjavax.imageio.ImageIO;importcom.sun.image.codec.jpeg.JPEGCodec;importcom.sun.image.codec.jpeg.JPEGImageEncoder;public classImageCompressUtil {/*** 创建图片缩略图(等比缩放)
*
*@paramsrc
* 源图片文件完整路径
*@paramdist
* 目标图片文件完整路径
*@paramwidth
* 缩放的宽度
*@paramheight
* 缩放的高度*/
public static void createThumbnail(String src, String dist, floatwidth,floatheight) {try{
File srcfile= newFile(src);if (!srcfile.exists()) {
System.out.println("文件不存在");return;
}
BufferedImage image=ImageIO.read(srcfile);//获得缩放的比例
double ratio = 1.0;//判断如果高、宽都不大于设定值,则不处理
if (image.getHeight() > height || image.getWidth() >width) {if (image.getHeight() >image.getWidth()) {
ratio= height /image.getHeight();
}else{
ratio= width /image.getWidth();
}
}//计算新的图面宽度和高度
int newWidth = (int) (image.getWidth() *ratio);int newHeight = (int) (image.getHeight() *ratio);
BufferedImage bfImage= newBufferedImage(newWidth, newHeight,
BufferedImage.TYPE_INT_RGB);
bfImage.getGraphics().drawImage(
image.getScaledInstance(newWidth, newHeight,
Image.SCALE_SMOOTH),0, 0, null);
FileOutputStream os= newFileOutputStream(dist);
JPEGImageEncoder encoder=JPEGCodec.createJPEGEncoder(os);
encoder.encode(bfImage);
os.close();
System.out.println("创建缩略图成功");
}catch(Exception e) {
System.out.println("创建缩略图发生异常" +e.getMessage());
}
}public static voidmain(String[] args) {
String basePath= "F:\\workspace\\.metadata\\.plugins\\org.eclipse.wst.server.core\\tmp0\\wtpwebapps\\AipFaceSys\\upload\\20180205\\";
createThumbnail(basePath+"20180205163552.png", basePath+"a.png", 256, 192);
createThumbnail(basePath+"20180205163552.png", basePath+"b.png", 640, 480);
createThumbnail(basePath+"20180205163552.png", basePath+"c.png", 960, 720);
}
}