2012-12-20 45 views
2

我有一個很大的問題,選擇圖庫的手機中的圖片功能! 我選擇了這張照片,我得到了這個URI,並且當我在「onActivityResult」中讀取這個流時,將這個流放入一個位圖中,我有一個「outoffmemoryerror」。Android - outfile存在錯誤decodefile或decodeStream將Uri轉換爲位圖

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
super.onActivityResult(requestCode, resultCode, data); 
if (resultCode == RESULT_OK) { 
     Uri uri = data.getData(); 
     InputStream is = getContentResolver().openInputStream(mSelectedUri); 
     Bitmap bitmap = BitmapFactory.decodeStream(is); 
} 

我試過其他代碼,但我有同樣的問題。 那麼,取決於圖片!

我發現這個: http://developer.android.com/training/displaying-bitmaps/index.htmlhttp://developer.android.com/training/displaying-bitmaps/load-bitmap.html

這一點:「爲了避免java.lang.OutOfMemory例外,解碼之前,檢查一個位圖的尺寸,除非你絕對信任源提供你的可預測大小的圖像數據可以很好地適應可用內存。「

+0

有一些示例代碼,以後你提供後者鏈接。 – harism

+0

我試試!但不要工作!或者我不明白! – VincentLamoute

回答

2

有時圖像對於位圖來說很大,所以獲取位圖的方法是縮小圖像。在這個網站是一個很好的例子,它的工作非常適合我

http://twigstechtips.blogspot.com/2011/10/android-resize-bitmap-image-while.html

+0

感謝!真的!我認爲這是工作!我有理由改變函數獲取Uri參數並打開一個InputStream(而不是FileInputStream)。只需改變InputStream = getContentResolver()。openInputStream(uri);真的謝謝你!你享受我的一天! – VincentLamoute

+0

:)沒問題.... – Opiatefuchs