import com.sun.image.codec.jpeg.JPEGCodec;import com.sun.image.codec.jpeg.JPEGImageEncoder;import java.applet.Applet;import java.awt.Color;import java.awt.Graphics;import java.awt.Image;import java.awt.MediaTracker;import java.awt.Toolkit;import java.awt.image.BufferedImage;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.PrintStream;public class CutImagUtil {String InputDir;String OutputDir;String InputFileName;String OutputFileName;int OutputWidth = 80;int OutputHeight = 80;int rate = 0;boolean proportion = true;public CutImagUtil() {this.InputDir = " ";this.OutputDir = " ";this.InputFileName = " ";this.OutputFileName = " ";this.OutputWidth = 80;this.OutputHeight = 80;this.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() {File file = new File(this.OutputDir + this.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(this.InputDir + this.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 ";}int new_w;int new_h;if (this.proportion) {double rate1 = img.getWidth(null) / this.OutputWidth + 0.1D;double rate2 = img.getHeight(null) / this.OutputHeight + 0.1D;double rate = (rate1 > rate2) ? rate1 : rate2;new_w = (int) (img.getWidth(null) / rate);new_h = (int) (img.getHeight(null) / rate);} else {new_w = this.OutputWidth;new_h = this.OutputHeight;}BufferedImage buffImg = new BufferedImage(new_w, new_h, 1);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[] args) {CutImagUtil test = new CutImagUtil();test.s_pic("d:\\", "d:\\", "QQ20130510143700.jpg", "123123.jpg", 500, 500, false);File file = new File("d:\\123123.jpg");file.delete();}}