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; } } 
|