0

我需要在磁盘上保存一个大图像 - 太大会产生内存不足错误(如 10000x10000 像素)。它假设是一个平铺,我将平铺作为 BufferedImage 存储在内存中。我读到了一些关于 TiledImage 类只能处理部分图像的内容,其余部分存储在磁盘上,但我还没有找到一个简单的例子来说明如何做到这一点? 您能否指点我或创建一个关于如何将大图像存储在磁盘上而不将其全部存储在内存中的教程?就像“像这样直接在磁盘上创建大图像:”,“像这样访问它的部分并在其中存储数据:”或者它可以工作..

我知道这已经在这里被问过几次了,但是我通读了所有这些并用谷歌搜索了很多,但仍然没有找到一个完整的工作(或可理解的)示例。也许是语言障碍,或者我只是在这种事情上很愚蠢,无论如何,请帮助:)

4

4 回答 4

2

您是否从他们的文档中检查了DiskMemImage

此类与 JAI 的标准 TiledImage 类具有相同的用途:即,可以容纳多种数据类型的可写图像、可选的 ColorModel 以及以瓦片排列的数据。但是,与 TiledImage 不同的是,DiskMemImage 使用磁盘和内存存储来允许在有限的内存中处理非常大的图像。

于 2012-12-28T12:25:48.150 回答
0

你可以看看PNGJ,我为类似的场景创建了那个库。

于 2012-12-28T12:43:00.340 回答
-1

我只会增加您的最大内存,这要简单得多。-Xmx1g在命令行上尝试一下。

使用瓷砖没有魔法。当您在屏幕上拼接在一起时,您只需将图像分解成较小的图像,使其看起来像一个大图像。例如谷歌地图就是这样做的。

于 2012-12-28T12:26:57.787 回答
-1

在 Java 中解决 OutOfMemoryError 的简单方法是使用 JVM 选项增加最大堆大小

于 2012-12-28T12:29:47.367 回答