【问题标题】:Storing a large image in java - tutorial在java中存储大图像 - 教程
【发布时间】:2012-12-28 12:13:36
【问题描述】:

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

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

【问题讨论】:

    标签: java jai


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        • salam,那只是避免问题,而不是解决方案
        • salam,那只是避免问题,而不是解决方案
        • 如果您正在处理实时生产,在网络上部署网站,那么这对您没有帮助,而且费用很高
        • 哦,我不是在这里不同意或提出问题,只是分享我的经验
        【解决方案4】:

        我只会增加您的最大内存,这要简单得多。在命令行中使用-Xmx1g 试试。

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

        【讨论】:

          猜你喜欢
          • 2016-03-24
          • 2012-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-10-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多