本人在压缩方法中借鉴其他仁兄的压缩方法,但是压缩透明照片后,照片背景变成黑底了。

/**
     * 
    * @Title: reduceImg
    * @Description: TODO(按比例压缩图片)
    * @param @param data 需要压缩的文件流
    * @param @param rate 压缩比例
    * @param @param fileType 压缩后生成的图片类型
    * @param @return    参数
    * @return byte[]    返回类型
    * @throws
    * @author HG
    * @date 2019年10月12日
    * @version 1.0
     */
    public static byte[] reduceImg(byte[] data,Float rate,String fileType) {
        ByteArrayOutputStream out = null;
        ByteArrayInputStream in = null;
        try {
            int widthdist = 0;
            int heightdist = 0;
            out = new ByteArrayOutputStream();
            in = new ByteArrayInputStream(data); 
            BufferedImage bi = ImageIO.read(in);

int srcWidth = bi.getWidth(null);
            int srcHeight = bi.getHeight(null);
            // 如果rate不为空说明是按比例压缩
            if (rate != null && rate > 0) {
                // 获取文件高度和宽度
                if (srcWidth == 0 || srcHeight == 0) {
                    return null;
                } else {
                    widthdist = (int) (srcWidth * rate);
                    heightdist = (int) (srcHeight * rate);
                }
            }
            // 开始读取文件并进行压缩srcImg.SCALE_AREA_AVERAGING   Image.SCALE_SMOOTH
            BufferedImage tag = new BufferedImage(widthdist, heightdist, BufferedImage.TYPE_INT_RGB);
//            Graphics2D resizedG = tag.createGraphics();
//            tag = resizedG.getDeviceConfiguration().createCompatibleImage(widthdist,heightdist,Transparency.TRANSLUCENT);
//            resizedG.dispose();
//            resizedG = tag.createGraphics();
//            Image from = bi.getScaledInstance(widthdist, heightdist, bi.SCALE_AREA_AVERAGING);
//            resizedG.setBackground(Color.white);
//            resizedG.drawImage(from, 0, 0, null);
//            resizedG.dispose();
//            ImageIO.write(tag, fileType, out);
//            byte[] outData = out.toByteArray();
//            return outData;
//            tag.getGraphics().setColor(Color.white);
            tag.getGraphics().fillRect( 0, 0 , widthdist, heightdist);
            tag.getGraphics().drawImage(bi.getScaledInstance(widthdist, heightdist,Image.SCALE_SMOOTH), 0, 0, null);
            ImageIO.write(tag, fileType, out);
            byte[] outData = out.toByteArray();
            return outData;
        } catch (IOException ex) {
            // TODO 日志
            System.out.println("CommonUtil***reduceImg压缩异常" + ex);
            return null;
        } finally {
            // 关闭流
            try {
                in.close();
                out.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                System.out.println("CommonUtil***reduceImg***关闭流异常" + e);
            }
        }
    }

后经过百度多篇文章需要添加tag.getGraphics().fillRect( 0, 0 , widthdist, heightdist);问题解决了,以此为记。

Java压缩背景透明图片后图片背景变成黑底相关推荐

  1. Java 创建背景透明的文字图片、将文本写到图片上

    Java 创建背景透明的文字图片.将文本写到图片上: import sun.font.FontDesignMetrics;import javax.imageio.ImageIO; import ja ...

  2. 【转】关于Java生成背景透明的png图片

    http://www.cnblogs.com/dotjava/archive/2008/09/04/1283963.html 关于Java生成背景透明的png图片 最近用到Java动态生成背景透明的图 ...

  3. html背景图总是在字的下面,怎么我在excel表格里插入背景图片后图片不是显示在文字下面而跑到文字右边的...

    怎么我在excel表格里插入背景图片后图片不是显示在文字下面而跑到文字右边的以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧 ...

  4. Java踩坑笔记 —— base64转换为图片后图片显示不全

    Java踩坑笔记 -- base64转换为图片后图片显示不全 前言 解决思路 案例代码 结束语 前言 最近在开发项目中,发现base64转换图片时,出现了图片显示不全,例如如下这样 可以明显看到图片部 ...

  5. 设置背景透明 html5,webview的背景如何设置成透明的?

    http://ask.dcloud.net.cn/question/4503 iOS - 5.0+ (支持): iOS平台不支持"transparent"背景透明样式,默认背景使用 ...

  6. 背景透明css样式,CSS 背景(background)+背景透明(CSS3)

    CSS 背景(background) CSS 可以添加背景颜色和背景图片,以及来进行图片设置. background-color 背景颜色 background-image 背景图片地址 backgr ...

  7. html怎么让导航栏背景透明,Swift - 导航栏背景全透明效果的实现(沉浸式效果)...

    由于导航栏背景透明,那么整个视图的背景便会占据全部的可视区域,从而让用户有一种沉浸式的体验.下面通过样例演示如何实现这个效果. 1,实现原理 (1)如果想让导航栏(navigationBar)透明,只 ...

  8. html中设置背景透明,css如何设置背景透明

    css设置背景透明的方法:首先在[ ]标签创建[ ]标签和添加类:然后在[ 3.为div添加样式.在 标签后面创建一个 4.保存后使用浏览器查看.可以看到当透明度为由0.1修改为1时div背景由灰色变 ...

  9. Java将图片处理成背景透明的圆形图片

    /** @author Michael Feng* @date 2017年9月4日*/import java.awt.AlphaComposite; import java.awt.Color; im ...

  10. qt设置文本背景透明_Qt修改图片的背景色及设置背景色为透明的方法

    先上干货. Qt下修改图片背景色的方法: 方法一: QPixmap CKnitWidget::ChangeImageColor(QPixmap sourcePixmap, QColor origCol ...

最新文章

  1. struts实战--登陆拦截器
  2. php curl获取响应,php – cUrl – 获取html响应正文
  3. java调用keras theano模型_使用Keras获得模型输出的梯度w.r.t权重
  4. 计算机应用能力文字录入,2017全国专业技术人员计算机应用能力考试题库-Excel,Word,XP.pdf...
  5. uva 138——Street Numbers
  6. c程序语言习题解答对编程有帮助吗,给C语言编程初学者的10个学习建议,助你学习事半功倍,不要错过...
  7. Unity3D基础5:摄像机与Game视图
  8. 3998. 变成1-AcWing题库
  9. vb 远程连接 SQLserver数据库的连接语句
  10. mysql压缩包部署和常见问题
  11. 使用html表单制作简单网页(加表单详细知识点)
  12. 28.Scala提取器Extractor实战详解
  13. win10网络适配器不见了_恢复消失的win10网络适配器的方法
  14. Tables[0].Rows.count是什么意思
  15. [SPRD CAMERA] 4 HAL Camera open流程一
  16. 1480_人月神话阅读笔记_开篇
  17. React——Components
  18. 07、人人都会设计模式:建造者模式--Builder
  19. 《Edge Boxes: Locating Object Proposals from Edges》读后感~
  20. 雨伞消费行业调研报告 - 市场现状分析与发展前景预测

热门文章

  1. vmware 虚拟机安装苹果系统
  2. 魔兽延迟最低的服务器,魔兽世界延迟高怎么回事_魔兽世界延迟高解决方法_玩游戏网...
  3. 综论数据库防火墙的自我修养系列之一:高可用性
  4. php echo eot,php理解print EOT分界符和echo EOT的用法的简单示例
  5. 《晨间日记的奇迹读》书笔记
  6. JavaScript网页特效范例目录
  7. 有趣的数学结论(未完待续)
  8. 2020大学计算机有什么专业,2020计算机专业院校名单「大学排名」
  9. Gallery 简易图片浏览
  10. 月薪2300深圳流水线女工,逆袭为年薪80万谷歌工程师,又因疫情失业:我绝不轻易认输...