首页 > 代码库 > 好记性不如烂笔头3-JAVA生成缩略图

好记性不如烂笔头3-JAVA生成缩略图


         电子商务网站等系统,有大量的图片;从加载速度和流量等角度出发,会使用比较多的缩略图。

1、创建图片的缩略图源代码

package com.daily;

 

import java.awt.Container;

import java.awt.Graphics2D;

import java.awt.Image;

import java.awt.MediaTracker;

import java.awt.RenderingHints;

import java.awt.Toolkit;

import java.awt.image.BufferedImage;

import java.io.BufferedOutputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

 

import com.sun.image.codec.jpeg.JPEGCodec;

import com.sun.image.codec.jpeg.JPEGEncodeParam;

import com.sun.image.codec.jpeg.JPEGImageEncoder;

/**

 * 生成缩略图

 * @author 范芳铭

 */

public class EasyThumbnail {

 

    private voidcreateThumbnail(String filename, int thumbWidth,

            intthumbHeight, int quality, String outFilename)

            throwsInterruptedException, FileNotFoundException, IOException {

        // loadimage from filename

        Image image= Toolkit.getDefaultToolkit().getImage(filename);

        MediaTrackermediaTracker = new MediaTracker(new Container());

        mediaTracker.addImage(image,0);

        mediaTracker.waitForID(0);

        // determinethumbnail size from WIDTH and HEIGHT

        doublethumbRatio = (double) thumbWidth / (double) thumbHeight;

        intimageWidth = image.getWidth(null);

        intimageHeight = image.getHeight(null);

        doubleimageRatio = (double) imageWidth / (double) imageHeight;

        if(thumbRatio < imageRatio) {

            thumbHeight= (int) (thumbWidth / imageRatio);

        } else {

            thumbWidth= (int) (thumbHeight * imageRatio);

        }

 

        // draworiginal image to thumbnail image object and

        // scale itto the new size on-the-fly

        BufferedImagethumbImage = new BufferedImage(thumbWidth, thumbHeight,

                BufferedImage.TYPE_INT_RGB);

        Graphics2Dgraphics2D = thumbImage.createGraphics();

        graphics2D.setRenderingHint(RenderingHints.KEY_INTERPOLATION,

                RenderingHints.VALUE_INTERPOLATION_BILINEAR);

        graphics2D.drawImage(image,0, 0, thumbWidth, thumbHeight, null);

 

        // savethumbnail image to outFilename

        BufferedOutputStreamout = new BufferedOutputStream(

                newFileOutputStream(outFilename));

        JPEGImageEncoderencoder = JPEGCodec.createJPEGEncoder(out);

        JPEGEncodeParamparam = 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();

    }

   

    public staticvoid main(String[] args) throws Exception{

        long start =System.currentTimeMillis();

        EasyThumbnailthumbnail = new EasyThumbnail();

        thumbnail.createThumbnail("d:/ffm83/fx.jpg",108, 100, 100, "d:/ffm83/fx_thunmbnail.jpg");

        long end =System.currentTimeMillis();

        System.out.println("生成缩略图耗时:" + (end - start) + "(毫秒)");

       

    }

 

}

 

2、运行结果

生成缩略图耗时:107(毫秒)

 

 

 

好记性不如烂笔头3-JAVA生成缩略图