如何在Java虚拟机不抛出OutOfMemory错误的情况下将巨大的映像加载到数据库中?

问题陈述

我需要加载10k行和3k col的浮动图像,并使用BufferedImage将其显示在JPanel上。如果使用FileChannel加载整个映像,则会收到JVM OutOfMemory错误。我无法对JVM进行硬编码以使其具有更大的内存大小,因为它无法解决在较小的计算机上打开映像的问题。

我正在尝试加载图像并将其划分为图块,并将其存储在像H2这样的内存数据库中,我将从中访问相应的图块并显示它。

问题

要打开图像并将其划分为图块,我要么必须打开整个图像(这可以解决问题),要么读取速度非常慢的每个像素/浮点数(FileInputStream)。

(FileInputStream比FileChannel慢)

我可以使用FileChannel读取带(所有列,但行数较少)并裁剪以创建图块,但这又是一个问题,因为读取带取决于我拥有的列数一个问题,它的列数很高,JVM会抛出OutOfMemoryError。

客观

瓦片:JVM可以处理的图像子集。

逐块读取图像并将其存储在内存数据库中。如果需要时,我将从“内存”数据库中获取它们,并使用BufferedImage类在JPanel上显示。

winner418 回答:如何在Java虚拟机不抛出OutOfMemory错误的情况下将巨大的映像加载到数据库中?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2798221.html

大家都在问