java图片压缩

2018-07-20    来源:open-open

容器云强势上线!快速搭建集群,上万Linux镜像随意使用
/** 
   * 改变图片的大小到宽为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();
   }  
  }  

标签: isp 代码

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。

上一篇: jQuery 实现 点击按钮后倒计时效果,多用于实现发送手机验证码、邮箱验证码

下一篇:Java服务器获取客户端的ip