2

我正在使用javax.imageio.ImageIO将 aBufferedImage b写入字节数组,最后写入文件。创建字节数组时,10 次中有 1 次java.lang.IndexOutOfBoundsException抛出 a。但是,仅使用相同的图像是无法重现的。

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

我发现了一个错误报告,似乎描述了同样的问题。但是我找不到修复程序,尽管它是从 2010 年开始的。

有任何想法吗?变通?资源链接?

高度赞赏帮助!

4

1 回答 1

5

这确实是一个错误。但是,如果您阅读报告,您会看到...

客户提交的解决方法:

使用内存缓存。

尝试使用 aMemoryCacheImageOutputStream代替,直到最终消除错误。

ImageIO.write(img, "png", new MemoryCacheImageOutputStream(baos));
于 2012-09-03T18:29:33.737 回答