缩略图android,android 查看图片缩略图

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

先看一张图:

69c76v3pF9pzobkKhOrXhAnZ5iH3WxLH9shzY4JjARkxQzo21xLyumilvu5HzuwEAh38mJnIBcMOAzAyy499QmsP7+W7j1sMdoq2wNWLUBk1x4A

这张图里,使用的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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值