使用BitmapFactory.Options处理图片时,BitmapFactory.decodeStream中的一些误区

最近在写图片发送到后台,遇到一个奇怪问题,当使用BitmampFactory.Options处理图片防止过大图片OOM时,使用如下代码获取 bitmap,

BitmapFactory.Options options = new BitmapFactory.Options();

options.inJustDecodeBounds = false;

Bitmap bmp = BitmapFactory.decodeStream(is,null,options);

获取出来的bmp = null,

原因就出在decodeStream这个方法上,之前网上找到的资料都使用

Bitmap bmp = BitmapFactory.decodeFile(path, options); 这个方法来获取bitmap,原因就在decodeStream 和 decodeFile上,使用decodeStream方法时候,解析的inputStream需要重新获取一遍,否则出来的bitmap将会是null,

InputStream is = cr.openInputStream(uri);

Bitmap bmp = null;

BitmapFactory.Options options = new BitmapFactory.Options();

options.inJustDecodeBounds = true;

BitmapFactory.decodeStream(is,null,options);

int imageWith = options.outWidth;//获取图片宽

int imageHeight = options.outHeight;//获取图片高

//获取可以使用的bitmap

options.inSampleSize = 8;

options.inJustDecodeBounds = false;

is = cr.openInputStream(uri);

bmp = BitmapFactory.decodeStream(is,null,options);

在再次使用inputStream的时候,再次获取下is就可以避免bitmap获取出来为null了。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值