1 回答
TA贡献1808条经验 获得超4个赞
加载固定大小的图像或动态调整图像大小。
关于fixed size和resize,可以参考这个,finddecodeFile方法:
protected Bitmap decodeFile(File f) {
try {
//decode image size
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 *= 2;
}
//decode with inSampleSize
BitmapFactory.Options o2 = new BitmapFactory.Options();
o2.inSampleSize = scale;
return BitmapFactory.decodeStream(new FileInputStream(f), null, o2);
} catch (FileNotFoundException e) {
}
return null;
}
可以看到,它用于 BitmapFactory.Options.inJustDecodeBounds= true预加载位图,并缩放位图。也可以参考官方文档。阅读本文以压缩位图的质量。
- 1 回答
- 0 关注
- 232 浏览
添加回答
举报