我想预加载(加载到内存中)约10张jpg图片(尺寸3264px x 2448px)。每个图像文件大小约为3MB。我试图将它们加载到BufferedImage的ArrayList中,但出现OutOfMemoryError异常(Java堆空间)。如何应付呢?
最佳答案
..有可能以压缩形式存储图像吗?
当然,将它们加载为字节数组并保留对每个(3 Meg)数组的引用。当您需要每张实际图像时,通过将其包装在ByteArrayInputStream
中将其标记为图像,并将其用作ImageIO.read(InputStream)
的源。
对于10 byte[]
,大约为30 Meg,对于每个实现的图像,则约为321 meg。