1. 程式人生 > >Java:生成圖片的縮圖

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