我有一个java程序可以做个这个你试试

解决方案 »

  1.   

    package  com.gfc.tool;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.*;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!"+"<BR>");
                            return "no";
                    }else{
                          int new_w;
                          int new_h;
                          if (this.proportion==true)  //判断是否是等比缩放.
                          {
                            //为等比缩放计算输出的图片宽度及高度
                            double rate1=((double)img.getWidth(null))/(double)OutputWidth+0.1;
                            double rate2=((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();
            }}