java圖片壓縮

cnp5 9年前發布 | 2K 次閱讀 Java

/**

  • 改變圖片的大小到寬為size,然后高隨著寬等比例變化
  • @param is 上傳的圖片的輸入流
  • @param os 改變了圖片的大小后,把圖片的流輸出到目標OutputStream
  • @param size 新圖片的寬
  • @param format 新圖片的格式
  • @throws IOException / public static void resizeImage1(InputStream is, OutputStream os, int size, String format) {
    try { BufferedImage prevImage = ImageIO.read(is);
    double width = prevImage.getWidth();
    double height = prevImage.getHeight();
    double percent = size/width;
    int newWidth = (int)(width
    percent);
    int newHeight = (int)(height percent);
    BufferedImage image = new BufferedImage(newWidth, newHeight, BufferedImage.TYPE_INT_BGR);
    //以下代碼在壓縮圖片透明背景會變成變黑色 /
    Graphics graphics = image.createGraphics();
    graphics.drawImage(prevImage, 0, 0, newWidth, newHeight, null);
    ImageIO.write(image, format, os);*/
    /////////////////////////////////////////

    //以下代碼解決在壓縮png格式的圖片透明背景會變成變黑色的問題 Graphics2D g2d = image.createGraphics(); image = g2d.getDeviceConfiguration().createCompatibleImage(newWidth,newHeight,Transparency.TRANSLUCENT); g2d.dispose(); g2d = image.createGraphics(); Image from = prevImage.getScaledInstance(newWidth, newHeight, prevImage.SCALE_AREA_AVERAGING); g2d.drawImage(from, 0, 0, null); g2d.dispose(); ImageIO.write(image, format,os); os.flush();
    is.close();
    os.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }
    } </pre>

 本文由用戶 cnp5 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!