在java中存储大图像 - 教程

时间:2012-12-28 12:13:37

标签: java jai

我需要在磁盘上保存一个大图像 - 这么大就会产生内存错误(如10000x10000像素)。它假设是一个平铺,我将磁贴存储在内存中作为BufferedImage。我读过一些关于TiledImage类只能处理部分图像,其余部分存储在磁盘上的内容,但我还没有找到一个如何做到这一点的简单示例? 您能否指点我或创建一个关于如何在磁盘上存储大图像而无需将所有内容存储在内存中的假人教程?喜欢“直接在磁盘上创建大图像:”,“访问它的部分和存储数据如下:“或者它的工作原理......

我知道这里曾经问过几次,但我仔细阅读了所有内容并搜索了很多内容,但仍然没有找到一个完整的(或可理解的)示例。也许这是语言障碍,或者我只是愚蠢的这种东西,无论如何,请帮助,请:)

4 个答案:

答案 0 :(得分:2)

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

  

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

答案 1 :(得分:0)

您可以查看PNGJ,我为类似的场景创建了该库。

答案 2 :(得分:-1)

我只会增加你的最大内存,它会简单得多。在命令行上使用-Xmx1g进行尝试。

使用瓷砖没有魔力。当您在屏幕上拼接时,您只需将图像分解为较小的图像,使其看起来像一个大图像。例如Google地图可以做到这一点。

答案 3 :(得分:-1)

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