package com.wxp.test;java
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;ssh
import javax.imageio.ImageIO;spa
import sun.awt.image.PNGImageDecoder;.net
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
import com.sun.imageio.plugins.png.PNGImageWriter;code
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);
}get
}
it