现在的位置: 首页 > 综合 > 正文

图片压缩

2013年04月22日 ⁄ 综合 ⁄ 共 1108字 ⁄ 字号 评论关闭

public void proce(String oldFile, int width, int height, float quality,
   String smallIcon) {

  String newImage = null;
  try {

   Image srcFile = ImageIO.read(new File(oldFile));

   double rate1 = ((double) srcFile.getWidth(null)) / (double) width;
   double rate2 = ((double) srcFile.getHeight(null)) / (double) height;
   double rate = rate1 > rate2 ? rate1 : rate2;
   int new_w = (int) (((double) srcFile.getWidth(null)) / rate);
   int new_h = (int) (((double) srcFile.getHeight(null)) / rate);

   BufferedImage tag = new BufferedImage(new_w, new_h,
     BufferedImage.TYPE_INT_RGB);
   tag.getGraphics().drawImage(srcFile, 0, 0, new_w, new_h, null);
   String filePrex = oldFile.substring(0, oldFile.lastIndexOf('.'));

   newImage = filePrex + smallIcon
     + oldFile.substring(filePrex.length());

   FileOutputStream out = new FileOutputStream(newImage);

   JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
   JPEGEncodeParam jep = JPEGCodec.getDefaultJPEGEncodeParam(tag);

   jep.setQuality(quality, true);
   encoder.encode(tag, jep);

   out.close();
   srcFile.flush();
   srcFile = null;

  } catch (FileNotFoundException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }
 }

抱歉!评论已关闭.