`
yangxianjiangg
  • 浏览: 59281 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

java实现图像缩略

阅读更多
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 DwindlePic{    
   String InputDir; //输入图路径    
   String OutputDir; //输出图路径    
   String InputFileName; //输入图文件名    
   String OutputFileName; //输出图文件名    
int OutputWidth = 80; //默认输出图片宽    
int OutputHeight = 80; //默认输出图片高    
int rate = 0;    
boolean proportion = true; //是否等比缩放标记(默认为等比缩放)    
   
public DwindlePic() {    
    //初始化变量    
     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();    
   }    
/** 
   public static void main(String[] a) 
   { 
//s_pic(大图片路径,生成小图片路径,大图片文件名,生成小图片文名,生成小图片宽度,生成小图片高度) 
     DwindlePic mypic = new DwindlePic(); 
     System.out.println( 
         mypic.s_pic("e:\\Tomcat\\webapps\\pms\\image\\", 
                     "e:\\Tomcat\\webapps\\pms\\image\\", 
                     "test.jpg", "new.jpg", 120, 80, true) 
         ); 
   } 
*/   
}   

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics