Java 大小大于2.3MB的png文件的OOM错误
我的应用程序在打开一个大小为2.5MB的.png文件时崩溃。此文件具有高分辨率。我收到OOM错误 导致错误的代码段是:Java 大小大于2.3MB的png文件的OOM错误,java,android,bitmap,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 = ne
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)
导致错误
任何帮助都将不胜感激
提前感谢您,因为在您的情况下,2MB位图可能需要大约10MB的内存
请参阅如何加载大型位图,因为在您的情况下,2MB位图可能需要大约10MB的内存
请参阅如何加载大型位图尝试使用此选项可能会解决您的问题
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);
我已经为宽度尺寸添加了代码,您也可以根据您的高度要求添加
如果您想了解更多信息,请查看此链接,它将帮助您:
其他建议的链接在这里:尝试使用此链接可能会解决您的问题
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);
我已经为宽度尺寸添加了代码,您也可以根据您的高度要求添加
如果您想了解更多信息,请查看此链接,它将帮助您:
其他建议的链接如下:如果
位图=BitmapFactory.decodeFile(文件路径)
导致错误,似乎有些地方出了问题,因为应该执行另一个If分支(位图=BitmapFactory.decodeFile(文件路径,选项);
),不是吗?如果位图=BitmapFactory.decodeFile(文件路径)
导致错误似乎出了问题,因为应该执行另一个if分支(bitmap=BitmapFactory.decodeFile(filePath,opts);
),不是吗?