感谢您之前的支持。 目前我正在开发一个项目,我需要调整从服务器下载的图像的大小。图像具有较大的分辨率,因此我想根据设备的屏幕尺寸调整大小。下面是我的代码。请看一下。
// decode image size initially
BitmapFactory.Options o = new BitmapFactory.Options();
o.inJustDecodeBounds = true;
FileInputStream stream1 = new FileInputStream(f);
BitmapFactory.decodeStream(stream1, null, o);
stream1.close();
// Find the correct scale value.
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 *= 2;
}
// decode with inSampleSize
BitmapFactory.Options o2 = new BitmapFactory.Options();
o2.inSampleSize = scale;
FileInputStream stream2 = new FileInputStream(f);
Bitmap bitmap = BitmapFactory.decodeStream(stream2, null, o2);
stream2.close();
但是,一旦我获得了所需的比例,对于三星 Galaxy S3,它会在代码末尾找到一个空位图。它在模拟器、三星 Galaxy S4、Htc one v 上运行良好。我还担心代码的通用性,因此它应该在每个设备上运行。
如果有人有解决此类问题的经验,请告诉我。
最佳答案
您的 REQUIRED_SIZE 值是多少?设置为1024。因为可能是由于解码大分辨率图像时出现内存不足异常。
关于java - 三星 Galaxy S3 中缩放位图失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20210092/