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);
	}
           记录一下



你可能感兴趣的:(android,bitmap,压缩图片)