博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
聊聊ImageIO使用argb操作jpg的bug
阅读量:6676 次
发布时间:2019-06-25

本文共 911 字,大约阅读时间需要 3 分钟。

本文主要来聊一下使用ImageIO在BufferedImage.TYPE_INT_ARGB模式下操作jpg格式图片显示黑色的bug。

bug

复现实例

public void testArgbOnJpg() throws IOException {        int width = 400;        int height = 400;        BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);        Graphics2D g2 = image.createGraphics();        g2.setColor(Color.WHITE);        g2.fillRect(0, 0, width, height);        g2.setComposite(AlphaComposite.Src);        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);                g2.setColor(Color.RED);        Ellipse2D.Float shape = new Ellipse2D.Float(20, 20, 10, 10);        g2.fill(shape);        g2.dispose();        image.flush();        ImageIO.write(image,"jpg",new File("out.jpg"));    }

可以发现输出的图片黑屏。

修复

BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

jpg情况下,改为使用BufferedImage.TYPE_INT_RGB,即可正常显示。

doc

转载地址:http://lqgxo.baihongyu.com/

你可能感兴趣的文章
【Visual C++】游戏开发笔记十五 游戏人工智能(一) 运动型游戏AI
查看>>
Linux 学习_samba
查看>>
不说技术~有时,开发者还是应该讲究一点!
查看>>
如何做好工作流定义
查看>>
.NET I/O 学习笔记:目录和文件
查看>>
pgpool-II3.1 的begin transaction 和 自动追加 BEGIN/COMMIT问题
查看>>
(转)记hadoop故障一例:BlockAlreadyExistsException
查看>>
hdu 4284 Travel floyd + 状压DP
查看>>
相似数据检测算法
查看>>
spring中的设计模式Observer pattern
查看>>
Lazarus 1.0.2 发布,Pascal 集成开发环境
查看>>
centos 7 中的 systemd
查看>>
Apple Watch已向微信开放WatchKit接口?
查看>>
数学图形(1.46)高次方程曲线
查看>>
Unitity 常用工具类
查看>>
广东省-IT公司红黑榜排名
查看>>
键盘过滤驱动
查看>>
SSL工作原理
查看>>
iOS中block实现的探究
查看>>
Hadoop JobHistory
查看>>