JAVA 이미지 압축

2887 단어 자바
픽 셀 이 높 은 그림 을 픽 셀 이 낮은 그림 으로 바 꿀 수 있 으 며,동시에 그림 의 선명 도 는 떨어진다.
jdk 1.5 이전 에는 PNG 형식의 그림 이 지원 되 지 않 았 습 니 다.그 다음 에는 지원 합 니 다.먼저 파일 전송 방식 을 보 여 드 리 겠 습 니 다.

package com.oct.com;

import java.awt.image.BufferedImage;
import java.awt.image.ColorModel;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

import javax.imageio.IIOImage;
import javax.imageio.ImageIO;
import javax.imageio.ImageTypeSpecifier;
import javax.imageio.ImageWriteParam;
import javax.imageio.ImageWriter;
import javax.imageio.plugins.jpeg.JPEGImageWriteParam;


/**
 *     
 * @author hero
 *
 */
public class ImgCompress {

	public static void main(String[] args) {
		ImgCompress.compressPic("C:\\img.jpg", "d:\\xxx.jpg");
	}
	
	/**
	 *     
	 * @param srcFilePath
	 * @param descFilePath
	 * @return
	 */
	public static boolean compressPic(String srcFilePath,String descFilePath){
		
		File file = null;
		BufferedImage src = null;
		FileOutputStream out = null;
		
		ImageWriter imgWriter;
		
		ImageWriteParam imgWriterParams;
		
		//         jpg
		imgWriter = ImageIO.getImageWritersByFormatName("jpg").next();
		
		/**
		 *    
		 */
		imgWriterParams = new JPEGImageWriteParam(null);
		//     ,         mode_ex...
		imgWriterParams.setCompressionMode(imgWriterParams.MODE_EXPLICIT);
		
		//         ,  qulity   0~1   
		imgWriterParams.setCompressionQuality((float)0.1);
		imgWriterParams.setProgressiveMode(imgWriterParams.MODE_DISABLED);
		ColorModel colorModel = ColorModel.getRGBdefault();
		//            
		imgWriterParams.setDestinationType(new ImageTypeSpecifier(colorModel,
				colorModel.createCompatibleSampleModel(16, 16)));
		try {
			
			if(!ImgCompress.isBlanck(srcFilePath)){
				return false;
			}else{
				
				file = new File(srcFilePath);
				src = ImageIO.read(file);//    
				out = new FileOutputStream(descFilePath);//     
				
				imgWriter.reset();
				
				//     out ,    write  ,ImageOutputStream      
				//OutputStream
				imgWriter.setOutput(ImageIO.createImageOutputStream(out));
				
				imgWriter.write(null,new IIOImage(src, null, null),imgWriterParams);
				out.flush();
				out.close();
			}
		} catch (IOException e) {
			e.printStackTrace();
			return false;
		}
		return true;
	}
	
	private static boolean isBlanck(String imgPath){	
		File file = new File(imgPath);
		return file.exists();
	}
}



좋은 웹페이지 즐겨찾기