java按比例之原图生成缩略图

package com.wxp.test;

import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;

import javax.imageio.ImageIO;

import sun.awt.image.PNGImageDecoder;

import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
import com.sun.imageio.plugins.png.PNGImageWriter;

public class CreateShortImage {

    public final static  String DDIST="D:\\WXPworkspace\\shortImage\\";
    public final static  String DSRC="D:\\WXPworkspace\\";
    
    /**
     * 创建图片缩略图(等比缩放)
     * @param src
     * @param dist
     * @param width
     * @param height
     */
    public static void createThumbnail(String src,String dist,float width,float height){
        try {
            File srcFile = new File(src);
            if(!srcFile.exists()){
                System.out.println("文件不存在");
                return;
            }
            BufferedImage image = ImageIO.read(srcFile);
            //获得缩放比例
            double ratio = 1.0;
            //判断如果高、宽都不大于设定值,则不处理
            if(image.getHeight() > height || image.getWidth() > width){
                if( image.getHeight() > image.getWidth()){
                    ratio = height / image.getHeight();
                }else{
                    ratio = width / image.getWidth();
                }
            }
            //计算新的图面宽度和高度
            int newWidth = (int)(image.getWidth() * ratio);
            int newHeight = (int)(image.getHeight() * ratio);
            BufferedImage bfiImage = new BufferedImage(newWidth, newHeight,BufferedImage.TYPE_INT_BGR);
            bfiImage.getGraphics().drawImage(
                    image.getScaledInstance(newWidth, newHeight,Image.SCALE_SMOOTH),0,0,null);
            FileOutputStream os = new FileOutputStream(dist);
            JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(os);
            encoder.encode(bfiImage);
            os.close();
            System.out.println("创建缩略图成功");
        } catch (Exception e) {
            // TODO: handle exception
            System.out.println("创建缩略图发生异常"+e.getMessage());
        }
    }
    /**
     * @param argsshortImage
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
          createThumbnail(DSRC+"1.png", DDIST+"a.png", 100, 100);
          createThumbnail(DSRC+"2.png", DDIST+"b.png", 100, 100);
          createThumbnail(DSRC+"3.jpg", DDIST+"c.jpg", 100, 100);
    }

}
 

猜你喜欢

转载自my.oschina.net/u/3378039/blog/1860208
今日推荐