图片压缩

    技术2022-06-08  45

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


    最新回复(0)