我的应用程序在打开一个大小为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)
导致错误。
任何帮助将不胜感激,
提前致谢
答案 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