您的位置:首页 > 编程语言 > Java开发

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

2015-01-28 17:13 447 查看
         电子商务网站等系统,有大量的图片;从加载速度和流量等角度出发,会使用比较多的缩略图。

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(毫秒)
 
 
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  电子商务 缩略图