大小超过2.3MB的png文件的OOM错误

时间:2013-02-08 05:19:23

标签: java android bitmap

我的应用程序在打开一个大小为2.5MB的.png文件时崩溃了。此文件具有高分辨率。我收到OOM错误。

导致错误的代码是:

long sizeInMB = imageFile.length()/(1024*1024);
if(sizeInMB > 2){
    int inSampleSize = (int) (sizeInMB/5);
    if(sizeInMB%5 > 0){
        inSampleSize++;
    }
    Options opts = new Options();
    opts.inSampleSize=inSampleSize;
    bitmap = BitmapFactory.decodeFile(filePath, opts);    
}else{
    bitmap = BitmapFactory.decodeFile(filePath);
} 

bitmap = BitmapFactory.decodeFile(filePath)导致错误。

任何帮助将不胜感激,

提前致谢

2 个答案:

答案 0 :(得分:2)

因为在你的情况下2MB位图可能需要大约10MB的内存

请参阅this了解如何加载大型位图

答案 1 :(得分:1)

尝试使用它可能会解决您的问题。

Options opts = new Options(); 
  opts.inJustDecodeBounds = true; 
  BitmapFactory.decodeFile(path, opts); 
  Log.e("optwidth",opts.outWidth+""); 
  opts.inJustDecodeBounds = false; 
  if(opts.outWidth>500){ 
          opts.inSampleSize = 4; 
          mBitmap = BitmapFactory.decodeFile(path, opts); 
  } 
  else mBitmap = BitmapFactory.decodeFile(path, opts);

我添加了宽度尺寸的代码,您也可以根据您的身高要求添加。

如果您想了解更多信息,请查看此链接,它会对您有所帮助:Handling large Bitmaps

其他建议的链接在这里:Out of memory cache error when accessing inside the app