太基础的就不多说了,大家都知道,图片加载前为了防止内存泄露,最好先压缩。但为了用户体验,又不能压缩的太狠,所以我们设置了一下希望得到的照片高度为200,宽度等比例压缩。代码如下:
bitmap = BitmapFactory.decodeFile(oldfileName,opt);
opt.inJustDecodeBounds = false;
int be=opt.outHeight/200;
if (be<=0) {
be=1;
}
opt.inSampleSize = be; //使用缩略图,缩小倍数
opt.inPreferredConfig = Bitmap.Config.RGB_565;
bitmap = BitmapFactory.decodeFile(oldfileName,opt);
问题来了,在这里我发现opt.inSampleSize的值只能为2的幂,比如让他等于9,但实际压缩倍数为8,等于15,实际压缩倍数还为8。经过查文档,看到说这个参数比较容易在2的幂时有效。
可是压缩倍数小了就容易内存溢出啊,而且传递时也会耗流量。可压缩到16的话照片就完全糊了。。。
同志们有个解决办法能让设置为10就压缩10倍,设置为13就压缩13倍的方法么?
求大神
------解决方案--------------------
得分两步走
第一步用你现在的方法压缩2的倍数
第二步用Matrix精确调整