Java:生成圖片的縮圖
阿新 • • 發佈:2019-02-09
public class ThumbnailUtil {
/**
* @param filename 原始檔名
* @param thumbWidth 縮圖寬度
* @param thumbHeight 縮圖高度
* @param quality 縮圖質量
* @param outFilename 輸出檔名
*/
public static void createThumbnail(String filename,int thumbWidth ,int thumbHeight,
int quality,String outFilename) throws Exception{
//載入圖片
Image image = Toolkit.getDefaultToolkit().getImage(filename);
MediaTracker mediaTracker = new MediaTracker(new Container());
mediaTracker.addImage(image, 0);
mediaTracker.waitForID(0);
//調整縮圖大小
double thumbRatio = (double)thumbWidth/(double )thumbHeight;
int imageWidth = image.getWidth(null);
int imageHeight = image.getHeight(null);
double imageRatio = (double)imageWidth/(double)imageHeight;
if(thumbRatio < imageRatio){
thumbHeight = (int)(thumbWidth / imageRatio);
}else{
thumbWidth = (int )(thumbHeight * imageRatio);
}
//繪製縮圖
BufferedImage thumbImage = new BufferedImage(thumbWidth, thumbHeight,
BufferedImage.TYPE_INT_RGB);
Graphics2D graphics2d = thumbImage.createGraphics();
graphics2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
graphics2d.drawImage(image, 0, 0, thumbWidth,thumbHeight,null);
//儲存
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(outFilename));
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(thumbImage);
quality = Math.max(0, Math.min(quality, 100));
param.setQuality((float)quality/100.0f, false);
encoder.setJPEGEncodeParam(param);
encoder.encode(thumbImage);
out.close();
}
}