You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何使用ImageIcon读取BMP字节数组时获取宽高返回-1,JPG格式正常

BMP格式字节数组用ImageIcon读取宽高返回-1的问题原因
  • 核心原因是ImageIcon类的底层解码逻辑没有复用ImageIO的全格式解码能力,其依赖的AWT原生解码器默认仅支持JPG、PNG、GIF三种格式的字节流解析,对BMP格式不识别,解析失败后就会返回宽高为-1。
  • 你代码中通过ImageIO.write写出的BMP字节数组本身是合法可用的,ImageIO.write返回true已经验证了写出操作成功,问题完全出在ImageIcon的解析环节,和上传接口、BMP字节数组本身的正确性无关。

修复方案

如果要兼容多种格式的图像字节数组读取宽高,直接使用ImageIO读取字节数组输入流即可,修改对应代码段:

// 替换原有ImageIcon相关逻辑
ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
BufferedImage bufferedImage = ImageIO.read(bais);
System.out.format( "%s, %s \n", bufferedImage.getWidth(), bufferedImage.getHeight());

内容的提问来源于stack exchange,提问作者Hawk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 13:06:09