import java.awt.image.BufferedImage; import java.io.File; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.imageio.ImageIO; import java.awt.image.AffineTransformOp; import java.awt.geom.AffineTransform; import java.awt.Image; 
public class ZoomPicture{   public static void main(String arg[]){          String filePath = "g:/图片.jpg";  // 图片的位置          int height=50;     int width=150;     Icon icon = null;     try{        icon = getFixedBoundIcon(filePath,height,width);        }catch(Exception e){         System.out.println("exception : " + e);         }     System.out.println(" ### " + icon);  //生成新图片的位置;   }         public static Icon getFixedBoundIcon(String filePath, int height, int width)          throws Exception{         double Ratio=0.0;         //缩放比例     File F = new File(filePath);          if (!F.isFile()) throw new Exception            (F+" is not image file error in getFixedBoundIcon!");          Icon ret = new ImageIcon(filePath);         BufferedImage Bi = ImageIO.read(F);          if ((Bi.getHeight()>height) || (Bi.getWidth()>width)){      if (Bi.getHeight()>Bi.getWidth()){       Ratio = (new Integer(height)).doubleValue() /Bi.getHeight();      }     else {       Ratio = (new Integer(width)).doubleValue()/Bi.getWidth();      }     int lastLength = filePath.lastIndexOf(".");     String subFilePath = filePath.substring(0,lastLength);     String fileType = filePath.substring(lastLength);     File zoomFile = new File(subFilePath+"_"+height +"_"+width+fileType);     Image Itemp = Bi.getScaledInstance (width,height,Bi.SCALE_SMOOTH);     AffineTransformOp op = new AffineTransformOp      (AffineTransform.getScaleInstance(Ratio, Ratio), null);     Itemp = op.filter(Bi, null);      try {       ImageIO.write((BufferedImage)Itemp, "jpg", zoomFile);        ret = new ImageIcon(zoomFile.getPath());      }catch (Exception ex) {      System.out.println("######## here error : " + ex);     }     }     return ret;  } }  
 
  |