在Android上打开jpegs - 我得到一个OutOfMemoryException

时间:2011-01-18 19:52:12

标签: android image bitmap jpeg

在我的应用程序中,我需要处理Android内置应用程序拍摄的图像。它们被保存为JPEG格式,我需要访问每个像素。我试图从jpeg图像创建一个Bitmap实例,但我经常得到一个OutOfMemoryException。我无法调整大小或裁剪图像。是否存在解决方案?

2 个答案:

答案 0 :(得分:1)

BitmapFactory经常抛出OutOfMemoryExceptions,我担心我从未真正发现过任何变通方法。它似乎在做自己的内存管理,有时它真的无法解析图像。在我曾经处理的几个应用程序中,必须处理大量图像,我只需要捕获异常,然后在我无法解析图像时在UI中留下空白点。有时,如果稍后再试,那些图像将会解析,大概是当BitmapFactory的内部存储器状态工作得更好时。

当我在开发J2ME应用程序时,我试图找到一个纯Java开源JPEG解析器,这样我就可以在没有内置JPEG支持的手机上使用它。事实证明,这样的事情很难找到,而我能找到的最接近的东西就埋藏在Eclipse源头的深处。我能够接受这个来源,de-Eclipsify并尝试一下。它确实具有逐行阅读的优点(虽然我不确定它如何用逐行扫描JPEG),但它在我们的J2ME设备上速度非常慢(特别是因为它们主要是低端的)所以我们最终没有把它用于任何事情。

答案 1 :(得分:1)

结帐BitmapRegionDecoder。它从API级别10开始可用。您可以解码部分图像文件并处理每个块。