问题陈述
我需要加载10k行和3k col的浮动图像,并使用BufferedImage
将其显示在JPanel上。如果使用FileChannel
加载整个映像,则会收到JVM OutOfMemory错误。我无法对JVM进行硬编码以使其具有更大的内存大小,因为它无法解决在较小的计算机上打开映像的问题。
我正在尝试加载图像并将其划分为图块,并将其存储在像H2这样的内存数据库中,我将从中访问相应的图块并显示它。
问题
要打开图像并将其划分为图块,我要么必须打开整个图像(这可以解决问题),要么读取速度非常慢的每个像素/浮点数(FileInputStream)。
(FileInputStream比FileChannel慢)
我可以使用FileChannel
读取带(所有列,但行数较少)并裁剪以创建图块,但这又是一个问题,因为读取带取决于我拥有的列数一个问题,它的列数很高,JVM会抛出OutOfMemoryError。
客观
瓦片:JVM可以处理的图像子集。
逐块读取图像并将其存储在内存数据库中。如果需要时,我将从“内存”数据库中获取它们,并使用BufferedImage
类在JPanel上显示。