2013-02-08 62 views
0

我的应用程序文件OOM错误被坠毁,机上开口,其具有2.5MB的大小.png文件。这个文件的分辨率很高,我得到了OOM错误。对PNG具有尺寸为大于2.3MB

该件的这会导致错误的代码是:

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)导致错误。

任何帮助将不胜感激,提前

+0

如果'位= BitmapFactory.decodeFile(文件路径)'导致错误的东西似乎出错了,因为其他的if-branch('bitmap = BitmapFactory.decodeFile(filePath,opts);')应该被执行,不是吗? – Taig

回答

1

尝试参照this使用这可能会解决你的问题。

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

+0

解决了我的问题...谢谢 – Rino

2

感谢因为你的情况2MB位可能需要大约10MB的内存

如何装载大量位图

+0

@Rino一旦你应该阅读,这个链接也很有用。 – Maulik

+0

非常感谢您的回答... – Rino