您的位置:首页 > 编程语言 > Java开发

javat图片缩小代码(测试通过)

2007-08-21 20:43 459 查看
最近用到的

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;
 }
 
}
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息