zoukankan      html  css  js  c++  java
  • 解决java压缩图片透明背景变黑色的问题

    
    
    public static BufferedImage resize(int faceWidth,BufferedImage srcImg,HttpServletRequest request) throws IOException{
            
            int imgWidth = 0;
            if(faceWidth>70 && faceWidth<120){
                imgWidth = faceWidth*7/8;
            }else if(faceWidth>60 && faceWidth<70){
                imgWidth = faceWidth*11/10;
            }else if(faceWidth < 60){
                imgWidth = faceWidth*6/5;
            }else{
                imgWidth = faceWidth*4/5;
            }
            int imgHeight = imgWidth*srcImg.getHeight()/srcImg.getWidth();
            
            //构建新的图片
            BufferedImage resizedImg = new BufferedImage(imgWidth,imgHeight,BufferedImage.TYPE_INT_RGB);
            //将原图放大或缩小后画下来:并且保持png图片放大或缩小后背景色是透明的而不是黑色
            Graphics2D resizedG = resizedImg.createGraphics();
            resizedImg = resizedG.getDeviceConfiguration().createCompatibleImage(imgWidth,imgHeight,Transparency.TRANSLUCENT);
            resizedG.dispose();
            resizedG = resizedImg.createGraphics();
            Image from = srcImg.getScaledInstance(imgWidth, imgHeight, srcImg.SCALE_AREA_AVERAGING);
            resizedG.drawImage(from, 0, 0, null);
            resizedG.dispose();           
              
            return resizedImg;
        }
  • 相关阅读:
    Seconds_Behind_Master的计算
    innnodb 线程在做什么?
    Mysql Join_buffer_size的使用原理
    C 实现位图排序
    C 内存池的实现
    C实现队列
    mysqld执行的函数栈
    Source Insight的基本用法
    MySQL高性能以及高安全测试
    【设计篇】状态与策略
  • 原文地址:https://www.cnblogs.com/ziysong/p/4652922.html
Copyright © 2011-2022 走看看