BitmapFactory.decodeStream()獲取bitmap返回null

正常的圖片縮放代碼如:android

 ByteArrayOutputStream baos = new ByteArrayOutputStream();spa

arg1.compress(Bitmap.CompressFormat.JPEG, 100, baos);//arg1爲傳進來的原始bitmapcode

baos.toByteArray();orm

InputStream is = new ByteArrayInputStream(baos.toByteArray());圖片

//進行縮放it

BitmapFactory.Options newOpts = new BitmapFactory.Options();io

// 開始讀入圖片,此時把options.inJustDecodeBounds 設回true了map

newOpts.inJustDecodeBounds = true;bug

Bitmap bitmap = BitmapFactory.decodeStream(is,null,newOpts);// 此時返回bm爲空float

newOpts.inJustDecodeBounds = false;

int w = newOpts.outWidth;

int h = newOpts.outHeight;

// 如今主流手機比較可能是800*480分辨率,因此高和寬咱們設置爲

float hh = 100f;// 這裏設置高度爲800f

float ww = 100f;// 這裏設置寬度爲480f

// 縮放比。因爲是固定比例縮放,只用高或者寬其中一個數據進行計算便可

int be = 1;// be=1表示不縮放

if (w > h && w > ww) {// 若是寬度大的話根據寬度固定大小縮放

be = (int) (newOpts.outWidth / ww);

} else if (w < h && h > hh) {// 若是高度高的話根據寬度固定大小縮放

be = (int) (newOpts.outHeight / hh);

}

if (be <= 0)

be = 1;

newOpts.inSampleSize = 2;// 設置縮放比例

// 從新讀入圖片,注意此時已經把options.inJustDecodeBounds 設回false了

bitmap = BitmapFactory.decodeStream(is, null, newOpts);

最後取得bitmap居然爲空,百思不得起解,而後將bitmap獲取方式改成BitmapFactory.decodeByteArray(baos.toByteArray(), 0, baos.toByteArray().length, newOpts)就能獲取到了,這個真難道是android的一個bug?

相關文章
相關標籤/搜索