java 图片无损压缩_java 实现图片按照执行比例的无损压缩

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);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值