当前位置: 代码迷 >> Android >> android拍照压缩,压缩倍数必须是2的幂么?
  详细解决方案

android拍照压缩,压缩倍数必须是2的幂么?

热度:64   发布时间:2016-05-01 12:01:02.0
android照相压缩,压缩倍数必须是2的幂么??
本帖最后由 atgczj 于 2013-01-16 16:35:25 编辑
太基础的就不多说了,大家都知道,图片加载前为了防止内存泄露,最好先压缩。但为了用户体验,又不能压缩的太狠,所以我们设置了一下希望得到的照片高度为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精确调整
  相关解决方案