正在装载数据…… 最近用到的 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 PictureZoom { public 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 + 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; } } 本文来源:http://blog.csdn.net/ITshu/archive/2007/08/21/1753401.aspx
|