java设置图片质量_java代码实现图片处理功能。对图片质量进行压缩。

/***

* 修改图片大小

*

描述

* @date 2014-7-10 下午4:27:51

*@version*@paramsrcFilePath

*@paramfileExtName

*@return*@throwsIOException*/

public static boolean compressPic(String srcFilePath,String fileExtName) throwsIOException {

File file= null;

BufferedImage src= null;

FileOutputStream out= null;

ImageWriter imgWrier;

ImageWriteParam imgWriteParams;long start1 =System.currentTimeMillis();//指定写图片的方式为 jpg

imgWrier =ImageIO.getImageWritersByFormatName(fileExtName).next();

imgWriteParams=imgWrier.getDefaultWriteParam();//imgWriteParams = new javax.imageio.plugins.jpeg.JPEGImageWriteParam(//null);//imgWriteParams = new javax.imageio.plugins.jpeg.JPEGImageWriteParam(//null);

imgWriteParams.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);//这里指定压缩的程度,参数qality是取值0~1范围内,

imgWriteParams.setCompressionQuality((float) 0.2);//imgWriteParams.setProgressiveMode(ImageWriteParam.MODE_DISABLED);// ColorModel colorModel =ImageIO.read(new File(srcFilePath)).getColorModel();//ColorModel.getRGBdefault();//指定压缩时使用的色彩模式

imgWriteParams.setDestinationType(newjavax.imageio.ImageTypeSpecifier(

colorModel, colorModel.createCompatibleSampleModel(16, 16)));long end1 =System.currentTimeMillis();

System.out.println("11111消耗时间:"+((double)end1-(double)start1)/1000+"秒");try{if(isBlank(srcFilePath)) {return false;

}else{

file= newFile(srcFilePath);

src=ImageIO.read(file);

out= newFileOutputStream(srcFilePath);

System.out.println("22222");

imgWrier.reset();//必须先指定 out值,才能调用write方法, ImageOutputStream可以通过任何//OutputStream构造

imgWrier.setOutput(ImageIO.createImageOutputStream(out));

System.out.println("3333333");//调用write方法,就可以向输入流写图片

long start4 =System.currentTimeMillis();

imgWrier.write(null, new IIOImage(src, null, null),

imgWriteParams);long end4 =System.currentTimeMillis();

System.out.println("4444消耗时间:"+((double)end4-(double)start4)/1000+"秒");

src.flush();

out.flush();

out.close();

imgWrier.dispose();

}

}catch(Exception e) {

e.printStackTrace();return false;

}return true;

}/***

* 修改单独图片大小

*

描述

* @date 2014-7-10 下午4:26:30

*@version*@paramfilePath

*@paramcreateType

*@throwsException*/

public static void changeNoneImgSize(String filePath,String createType) throwsException

{

File tempFile= newFile(filePath);if(tempFile.length()>ImagesUtils.IMAGEMAXSIZE){long start =System.currentTimeMillis();

compressPic(filePath,createType);long end =System.currentTimeMillis();

System.out.println(filePath+"消耗时间:"+((double)end-(double)start)/1000+"秒");

}

}/***

* 修改多个图片大小

*

描述

* @date 2014-7-10 下午4:26:52

*@version*@paramfile

*@throwsException*/

public static void changeManyImgSize(File file) throwsException

{try{//判断文件是否是文件,如果是文件,获取路径,并计数

if(file.isFile()) {

String fileExtName=file.getName().substring(

(file.getName().lastIndexOf(".") + 1), file.getName().length());if(ImagesUtils.isImageFile(fileExtName))

changeNoneImgSize(file.getAbsolutePath(), fileExtName);//ImagesUtils.changeImgSize(file.getAbsolutePath(), ImagesUtils.CREATENEWIMAGETYPE_6);

} else{//如果是文件夹,声明一个数组放文件夹和他的子文件

File[] f =file.listFiles();//遍历文件件下的文件,并获取路径

for(File file2 : f) {

changeManyImgSize(file2);

}

}

}catch(RuntimeException e) {

e.printStackTrace();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值