Android 压缩网络上的图片BitmapFactory.decodeStream()返回为空的问题

       今天做开发的时候需要加载网络图片并压缩,但是并不是我想象的那样一帆风顺,今天就把我碰到问题以及解决问题的过程记录下来。

       首先压缩图片,很简单么,网上的资料也很多,把代码贴上供大家参考

   

  final BitmapFactory.Options options = new BitmapFactory.Options();  
    options.inJustDecodeBounds = true;  
    BitmapFactory.decodeResource(res, resId, options);  
    options.inSampleSize = 2;   
    options.inJustDecodeBounds = false;  
    return BitmapFactory.decodeResource(res, resId, options);  
      上面的代码就是把本地图片压缩俩倍


      之后按照正常思路开始压缩网络上加载的图片

 final BitmapFactory.Options options = new BitmapFactory.Options();  
    options.inJustDecodeBounds = true;  
    BitmapFactory.decodeStream(is, null, options); 
    options.inSampleSize = 2;   
    options.inJustDecodeBounds = false;  
    return BitmapFactory.decodeStream(is, null, options);;  

     可是这样写之后会发现,return为null,百思不得其解,百度谷歌齐上阵发现有一种说法是 android 的一个bug 。在android 2.2 以下(包括2.2) 用 BitmapFactory.decodeStream() 这个方法,会出现概率性的解析失败的异常。而在高版本中,eg 2.3 则不会出现这种 异常


       解决办法

	public Bitmap decodeSamplerBitmap(byte[] data, int reqWidth, int reqHeight) {
		BitmapFactory.Options options = new BitmapFactory.Options();
		options.inJustDecodeBounds = true;
		BitmapFactory.decodeByteArray(data, 0, data.length, options);
		options.inSampleSize = calcImage(options, reqHeight, reqWidth);
		options.inJustDecodeBounds = false;
		return BitmapFactory.decodeByteArray(data, 0, data.length, options);
	}
           记录一下



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值