我正在使用javax.imageio.ImageIO
将BufferedImage b
写入字节数组,最后写入文件。创建字节数组时,10次中有1次抛出java.lang.IndexOutOfBoundsException
。但是,仅通过使用相同的图像无法再现。
BufferedImage img = ...
ByteArrayOutputStream baos = new ByteArrayOutputStream();
// the next line will lead to the exception being thrown
ImageIO.write(img, "png", baos);
byte[] byteArray = baos.toByteArray()
结果是:
java.lang.IndexOutOfBoundsException
Line | Method
->> 166 | seek in
javax.imageio.stream.FileCacheImageOutputStream
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 227 | close in ''
| 1570 | write . . . . . . . . . . in javax.imageio.ImageIO
我找到了bug report,似乎描述了同样的问题。但是,从2010年开始,我找不到修复方法。
有什么想法吗?解决?资源链接?
非常感谢帮助!
答案 0 :(得分:4)
确实是bug。 但是,如果你仔细阅读报告,你会看到......
CUSTOMER提交的解决方法:
使用内存缓存。
尝试使用MemoryCacheImageOutputStream
代替,直到错误被压缩 。
ImageIO.write(img, "png", new MemoryCacheImageOutputStream(baos));