我已经使用位图转换了图像(字符串 url),但有时会产生内存不足错误。这是我的代码:
BitmapFactory.Options o = new BitmapFactory.Options();
o.inJustDecodeBounds = true;
BitmapFactory.decodeStream(new FileInputStream(f),null,o);
//Find the correct scale value. It should be the power of 2.
final int REQUIRED_SIZE=150;
int width_tmp=o.outWidth, height_tmp=o.outHeight;
int scale=1;
while(true){
if(width_tmp/2<REQUIRED_SIZE || height_tmp/2<REQUIRED_SIZE)
break;
width_tmp/=2;
height_tmp/=2;
scale++;
}
//decode with inSampleSize
BitmapFactory.Options o2 = new BitmapFactory.Options();
o2.inSampleSize=scale;
最佳答案
首先,缩小图像的大小。您可以在不大幅改变质量的情况下做到这一点。为了进行实验,只需尝试将图像保存为位图即可。你会感到震惊。例如,如果您的 jpg 大小为 3MB,则转换为 bmp 后大约为 21MB - 这是一个巨大的数字!
关于java - 当我们使用 Bitmap 时内存不足,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18201989/