Java:生成图片的缩略图

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();
    }
}

猜你喜欢

转载自blog.csdn.net/crazylai1996/article/details/76736621