import java.io.File; import java.awt.image.BufferedImage; import java.awt.Image; import java.awt.Graphics2D; import java.awt.image.AffineTransformOp; import java.awt.image.RescaleOp; import javax.imageio.ImageIO; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.awt.geom.AffineTransform;public class ThumbNail{ String fromdir=""; String todir=""; String imgfile=""; String sysimgfile=""; String ext="jpg"; //默认图片格式 int size=0; public ThumbNail(){} public boolean CreateThumbnail() throws Exception { double Ratio=0.0; BufferedImage Bi=null; Image Itemp=null; BufferedImage img11=null; File F = new File(fromdir,imgfile); if (!F.isFile()) throw new Exception(F+" is not image file error in CreateThumbnail!"); File ThF = new File(todir,sysimgfile+"."+ext); try{ Bi = ImageIO.read(F);
int BW=(int)(size*Bi.getWidth()/Bi.getHeight()); int BH=size; Itemp = Bi.getScaledInstance (BW,BH,Bi.SCALE_SMOOTH); BufferedImage BImg=null; try{ if (Bi.getHeight()>size){ Ratio =(double)(size)/Bi.getHeight(); } AffineTransformOp op = new AffineTransformOp(AffineTransform.getScaleInstance(Ratio, Ratio), null); BImg=op.filter(Bi, null);
}catch(Exception ex){ BImg=new BufferedImage(Itemp.getWidth(null),Itemp.getHeight(null),BufferedImage.TYPE_INT_RGB); Graphics2D g2= BImg.createGraphics(); g2.drawImage(Itemp,0,0,null); } ImageIO.write((BufferedImage)BImg, ext, ThF); }catch (Exception ex) { this.saveJust(); System.out.println(" ImageIo.write error in CreatThum: "+ex.getMessage()); return false; } return (true); } public void saveJust() { try{ File F = new File(fromdir,imgfile); if (!F.isFile()) throw new Exception(F+" is not image file error in CreateThumbnail!"); File ThF = new File(todir,imgfile); FileInputStream fis=new FileInputStream(F); FileOutputStream fos=new FileOutputStream(ThF); byte[] b = new byte[255]; int bRead=0; while((bRead=fis.read(b))>-1) fos.write(b,0,bRead); fos.close(); fis.close(); }catch(Exception e) { }
} public void setfromdir(String str) { fromdir=str; } public void settodir(String str) { todir=str; } public void setimgfile(String str) { imgfile=str; } public void setsysimgfile(String str) { for(int i=str.length()-1;i>=0;i--) if(str.charAt(i)=='.'){ sysimgfile=str.substring(0,i); i=-1; return; } sysimgfile=str; } public void setsize(int s) { size=s; } public void setext(String str) { ext=str; } /*public static void main(String args[]) { ThumbNail tn=new ThumbNail(); tn.setsize(100); tn.setfromdir("d:/javaTest/"); tn.setimgfile("abc.jpg"); tn.settodir("d:/"); tn.setsysimgfile("trytr"); try{ if(tn.CreateThumbnail()) System.out.println("succed"); }catch(Exception e){ System.out.println("failed to create the thumbnail"); } }*/ }认真看吧
import java.awt.image.BufferedImage;
import java.awt.Image;
import java.awt.Graphics2D;
import java.awt.image.AffineTransformOp;
import java.awt.image.RescaleOp;
import javax.imageio.ImageIO;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.awt.geom.AffineTransform;public class ThumbNail{
String fromdir="";
String todir="";
String imgfile="";
String sysimgfile="";
String ext="jpg"; //默认图片格式
int size=0;
public ThumbNail(){}
public boolean CreateThumbnail() throws Exception
{ double Ratio=0.0;
BufferedImage Bi=null;
Image Itemp=null;
BufferedImage img11=null; File F = new File(fromdir,imgfile);
if (!F.isFile())
throw new Exception(F+" is not image file error in CreateThumbnail!"); File ThF = new File(todir,sysimgfile+"."+ext); try{
Bi = ImageIO.read(F);
int BW=(int)(size*Bi.getWidth()/Bi.getHeight());
int BH=size;
Itemp = Bi.getScaledInstance (BW,BH,Bi.SCALE_SMOOTH);
BufferedImage BImg=null; try{
if (Bi.getHeight()>size){
Ratio =(double)(size)/Bi.getHeight();
}
AffineTransformOp op = new AffineTransformOp(AffineTransform.getScaleInstance(Ratio, Ratio), null);
BImg=op.filter(Bi, null);
}catch(Exception ex){
BImg=new BufferedImage(Itemp.getWidth(null),Itemp.getHeight(null),BufferedImage.TYPE_INT_RGB);
Graphics2D g2= BImg.createGraphics();
g2.drawImage(Itemp,0,0,null);
} ImageIO.write((BufferedImage)BImg, ext, ThF);
}catch (Exception ex) {
this.saveJust();
System.out.println(" ImageIo.write error in CreatThum: "+ex.getMessage());
return false;
}
return (true);
}
public void saveJust()
{
try{
File F = new File(fromdir,imgfile);
if (!F.isFile())
throw new Exception(F+" is not image file error in CreateThumbnail!");
File ThF = new File(todir,imgfile);
FileInputStream fis=new FileInputStream(F);
FileOutputStream fos=new FileOutputStream(ThF);
byte[] b = new byte[255];
int bRead=0;
while((bRead=fis.read(b))>-1)
fos.write(b,0,bRead);
fos.close();
fis.close();
}catch(Exception e)
{
}
}
public void setfromdir(String str)
{
fromdir=str;
}
public void settodir(String str)
{
todir=str;
}
public void setimgfile(String str)
{
imgfile=str;
}
public void setsysimgfile(String str)
{
for(int i=str.length()-1;i>=0;i--)
if(str.charAt(i)=='.'){
sysimgfile=str.substring(0,i);
i=-1;
return;
}
sysimgfile=str;
}
public void setsize(int s)
{
size=s;
}
public void setext(String str)
{
ext=str;
} /*public static void main(String args[])
{
ThumbNail tn=new ThumbNail();
tn.setsize(100);
tn.setfromdir("d:/javaTest/");
tn.setimgfile("abc.jpg");
tn.settodir("d:/");
tn.setsysimgfile("trytr");
try{
if(tn.CreateThumbnail())
System.out.println("succed");
}catch(Exception e){
System.out.println("failed to create the thumbnail"); }
}*/
}认真看吧