加载在j2me中导致堆错误的巨大分辨率图像

时间:2010-02-13 14:40:06

标签: java-me heap

我正在尝试将3776 * 2816 PNG,24位图像 - 804KB加载到我的手机上,MOTO ROKR e6.It放弃了java.lang.OutOfMemoryError,它们是处理加载此类高分辨率图像的一般方法手机的内存只有8MB,我认为这与错误有关。

我也尝试将图像分割成16个部分并加载它们,但它仍然可以处理它的一些限制。

请告知。

1 个答案:

答案 0 :(得分:1)

所以只是一些快速计算:

24 bits = 3 bytes
space required (in bytes) = 3776 * 2816 * 3 
                          = 31,899,648 bytes
                          = 31.9MB

这意味着一旦你加载了图像(使用ImageIO或JAI或其他),你需要31.9MB来存储原始图像数据。因此,您无法将其加载到只有8MB内存的设备上(我假设没有其他类型的交换空间)。

您可以将原始文件作为数据字节而不是图像加载 - 数据被大量压缩 - 但我不认为这是您正在寻找的。