android 查看图片缩略图

在android中,图片使用上,往往会出现OOM(out of memory)的情况,在这里,我将总结一些办法,来避免OOM的问题。

先看一张图:



这张图里,使用的gridView来显示图片,如果图片数目很多,上下滚动的时候,很容易出现OOM的情况。

这里,每张图片的实际像素是320*480.这里缩放后,每张图片的大小是100*100.、

缩放代码如下:


Options options = new BitmapFactory.Options();
                    options.inJustDecodeBounds = true;
                    BitmapFactory.decodeFile(imagePath, options);
                    int scale = 1;
                    while (true) {
                        if (options.outWidth / 2 >= width && options.outHeight / 2 >= height) {
                            options.outWidth /= 2;
                            options.outHeight /= 2;
                            scale++;
                        } else {
                            break;
                        }
                    }
                    Log.i(TAG, "inSampleSize=" + scale);
                    options.inSampleSize = scale;
                    options.inJustDecodeBounds = false;
                   return BitmapFactory.decodeFile(imagePath, options);



做点说明:

Options这个类,有两个重要的属性。分别是inJustDecodeBounds 和inSampleSize。

inJustDecodeBounds 表示是否只是解码边界信息,也就是,这段代码

BitmapFactory.decodeFile(imagePath, options);
之后,options里会存储该图片的高度和宽度信息,而此时返回的bitmap是为null的。

得到了图片的高度和宽度之后,我们再看下一个属性inSampleSize,这个属性可以理解为缩放比例,是int类型,缩放比例为2的指数倍

比如说inSampleSize=1时,则表示不缩放,inSampleSize=2时,表示长和宽都分别缩小到原来的1/2*2,即四分之一,同理为3时则为九分之一。

最后缩放出来的大小,并不是能和要求的大小一模一样,但是不会小于指定的长和宽,可以在LayoutParams里指定长和宽,即达到了图上的效果。



  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值