2

将 BufferedImage 保存到磁盘(以释放内存)的最快方法是什么?

我的 Java 应用程序处理大量图像(每约 300 毫秒将图像加载到内存中)。这些图像中的大多数都立即被丢弃(gc),但每隔一段时间我需要保存一张图像。

当然,将它们保存在 RAM 中并不是一个好主意,因为它会在几分钟内平均消耗 2GB JVM,并破坏应用程序,因此我尝试将其保存到磁盘。问题是,保存它ImageIO.write(img, "PNG", file)是不够的,因为有时(在我的 i7 机器上)每个 12MB 图像需要 5-10 秒来处理和保存,并且仍然不能足够快地释放内存。

是否有另一种可能执行得更快的格式?

编辑:

我不在乎以合理的水平降低分辨率或松散的图像数据。

4

1 回答 1

5

PNG 在 ImageIO 中是出了名的慢。您可以尝试获取底层的读者和作者。也许写一个高质量的JPEG。替代品

您不能先将输入文件存储为 File,因此不需要使用 ImageIO 编写。

为了完整起见:如果你 da aBufferedImage.getGraphics()不要忘记dispose().

于 2013-08-01T11:27:16.743 回答