JAVA图片压缩

保持图片的宽度和高度,并将图片压缩到指定大小,并保存。

public static boolean compressImage() throws Exception{
		//读取图片
		File inputFile = new File("f:\\1.jpg") ;
		BufferedImage bufferedImage = ImageIO.read(inputFile) ;
		//输出文件流
		FileOutputStream out = new FileOutputStream("f:\\2.jpg");
		
		ImageWriter imageWriter = ImageIO.getImageWritersByFormatName("jpeg").next() ;
		ImageWriteParam imageWriteParam = new JPEGImageWriteParam(null) ;
		//使用指定的压缩参数
		imageWriteParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT) ;
		//如果源图片大小大于70KB,则将其压缩到70KB
		if(inputFile.length()>70000){
			imageWriteParam.setCompressionQuality((float) (100000.0/inputFile.length())) ;
		}else{
			imageWriteParam.setCompressionQuality(1) ;
		}
		//在压缩过程中进度信息设置
		imageWriteParam.setProgressiveMode(ImageWriteParam.MODE_DISABLED) ;
		ColorModel colorModel = ColorModel.getRGBdefault() ;
		//设置目标图片属性
		imageWriteParam.setDestinationType(new ImageTypeSpecifier(colorModel, colorModel.createCompatibleSampleModel(16, 16))) ;
		//设置图片输出文件流
		imageWriter.reset() ;
		imageWriter.setOutput(ImageIO.createImageOutputStream(out)) ;
		imageWriter.write(null,new IIOImage(bufferedImage, null, null), imageWriteParam) ;
		//刷新文件输出流
		out.flush();
		out.close();
		return true ;
	}

 测试图片见附件。

 

你可能感兴趣的:(java)