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();
}
}
Java:生成图片的缩略图
猜你喜欢
转载自blog.csdn.net/crazylai1996/article/details/76736621
今日推荐
周排行