31
2006
10

缩略图实现,将图片(jpg,gif,bmp等等)真实的变成想要的大小

import java.io.*; import java.util.*; import com.sun.image.codec.jpeg.*; import java.awt.image.*; import java.awt.*; import java.net.*; import java.applet.*; import java.sql.*; //缩略图类, //本java类能将jpg图片文件,进行等比或非等比的大小转换。 //具体使用方法 //s_pic(大图片路径,生成小图片路径,大图片文件名,生成小图片文名,生成小图片宽度,生成小图片高度,是否等比缩放(默认为true)) public class Small_pic{ String InputDir; //输入图路径 String OutputDir; //输出图路径 String InputFileName; //输入图文件名 String OutputFileName; //输出图文件名 int OutputWidth=80; //默认输出图片宽 int OutputHeight=80; //默认输出图片高 int rate=0; boolean proportion=true; //是否等比缩放标记(默认为等比缩放) public Small_pic(){ //初始化变量 InputDir=""; OutputDir=""; InputFileName=""; OutputFileName=""; OutputWidth=80; OutputHeight=80; rate=0; } public void setInputDir(String InputDir){ this.InputDir=InputDir; } public void setOutputDir(String OutputDir){ this.OutputDir=OutputDir; } public void setInputFileName(String InputFileName){ this.InputFileName=InputFileName; } public void setOutputFileName(String OutputFileName){ this.OutputFileName=OutputFileName; } public void setOutputWidth(int OutputWidth){ this.OutputWidth=OutputWidth; } public void setOutputHeight(int OutputHeight){ this.OutputHeight=OutputHeight; } public void setW_H(int width,int height){ this.OutputWidth=width; this.OutputHeight=height; } public String s_pic(){ BufferedImage image; String NewFileName; //建立输出文件对象 File file = new File(OutputDir+OutputFileName); FileOutputStream tempout =null; try{ tempout= new FileOutputStream(file); }catch(Exception ex){ System.out.println(ex.toString()); } Image img=null; Toolkit tk=Toolkit.getDefaultToolkit(); Applet app=new Applet(); MediaTracker mt = new MediaTracker(app); try { img=tk.getImage(InputDir+InputFileName); mt.addImage(img, 0); mt.waitForID(0); }catch(Exception e) { e.printStackTrace(); } if(img.getWidth(null)==-1){ System.out.println(" can't read,retry!"+"
"); return "no"; }else{ int new_w; int new_h; if (this.proportion==true) //判断是否是等比缩放. { //为等比缩放计算输出的图片宽度及高度 double rate1=((double)img.getWidth(null))/(double)OutputWidth+0.1; doublerate2=((double)img.getHeight(null))/(double)OutputHeight+0.1; double rate=rate1>rate2?rate1:rate2; new_w=(int)(((double)img.getWidth(null))/rate); new_h=(int)(((double)img.getHeight(null))/rate); } else{ new_w=OutputWidth; //输出的图片宽度 new_h=OutputHeight; //输出的图片高度 } BufferedImage buffImg = new BufferedImage(new_w,new_h,BufferedImage.TYPE_INT_RGB); Graphics g = buffImg.createGraphics(); g.setColor(Color.white); g.fillRect(0,0,new_w,new_h); g.drawImage(img,0,0,new_w,new_h,null); g.dispose(); JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(tempout); try{ encoder.encode(buffImg); tempout.close(); }catch(IOException ex){ System.out.println(ex.toString()); } } return "ok"; } public String s_pic(String InputDir,String OutputDir,String InputFileName,String OutputFileName){ //输入图路径 this.InputDir=InputDir; //输出图路径 this.OutputDir=OutputDir; //输入图文件名 this.InputFileName=InputFileName; //输出图文件名 this.OutputFileName=OutputFileName; return s_pic(); } public String s_pic(String InputDir,String OutputDir,String InputFileName,String OutputFileName,int width,int height,boolean gp){ //输入图路径 this.InputDir=InputDir; //输出图路径 this.OutputDir=OutputDir; //输入图文件名 this.InputFileName=InputFileName; //输出图文件名 this.OutputFileName=OutputFileName; //设置图片长宽 setW_H(width,height); //是否是等比缩放 标记 this.proportion=gp; return s_pic(); } public static void main(String [] a) { //s_pic(大图片路径,生成小图片路径,大图片文件名,生成小图片文名,生成小图片宽度,生成小图片高度) Small_pic mypic =new Small_pic(); System.out.println( mypic.s_pic("E:JAVAJ2EEDatum王亮jsp资料缩图例子personal", "E:JAVAJ2EEDatum王亮jsp资料缩图例子personal", "1.jpg","new1.jpg",80,80,true) ); } }
« 上一篇 下一篇 »