2011-01-07 35 views
2

我進行加密,然後解密一個形象,我再傳給我的形象UTIL調整大小,(代碼從什麼地方優雅地借用),像這樣:BitmapFactory不能解碼CipherInputStream兩次

public static Bitmap loadResizedBitmap(InputStream dis, int width, int height) { 

    BufferedInputStream bis = new BufferedInputStream(dis); 
    Bitmap bitmap = null; 
    BitmapFactory.Options options = new BitmapFactory.Options(); 
    options.inJustDecodeBounds = true; 
    BitmapFactory.decodeStream(bis, null, options); 
    if (options.outHeight > 0 && options.outWidth > 0) { 
     options.inJustDecodeBounds = false; 
     options.inSampleSize = 2; 

     while (options.outWidth/options.inSampleSize > width && 
       options.outHeight/options.inSampleSize > height) { 
      options.inSampleSize++; 
     } 
     options.inSampleSize--; 
     bitmap = BitmapFactory.decodeStream(bis, null, options); 
    } 
    return bitmap; 
} 

的問題是第二個過程decodeStream,BitmapFactory返回null。我已經驗證了第一個工作,並輸出正確的大小,等等。我的猜測是CipherInputStream不支持標記和重置,所以我把它包裝在沒有運氣的BufferedInputStream中。有沒有人有任何建議?

回答

3

[ANSWERED]

我切換爲使用BitmapFactory.decodeByteArray和解決它。我再次看了一下API,並且能夠傳遞一個字節[]。

我的外賣是CipherInputStream不支持mark()和reset()。

+0

不要忘記接受你自己的答案。 :-) – 2011-01-07 05:27:59