2013-07-29 27 views
0

的方法工作正常,通過拍攝的圖像返回null內置攝像頭,但對於來自外部的圖像(網頁,一個物理相機等)BitmapFactory.decodeStream(的ImageStream)返回null。有誰知道什麼可能導致錯誤?BitmapFactory.decodeStream一些圖像

這裏是堆棧跟蹤:

07-29 17:25:48.105: E/AndroidRuntime(32296): FATAL EXCEPTION: main 
07-29 17:25:48.105: E/AndroidRuntime(32296): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { dat=content://com.google.android.gallery3d.provider/picasa/item/5716149895129356946 flg=0x1 }} to activity {com.example.news_app/com.example.news_app.android.ui.SettingsActivity}: java.lang.NullPointerException 
07-29 17:25:48.105: E/AndroidRuntime(32296): at android.app.ActivityThread.deliverResults(ActivityThread.java:3319) 
07-29 17:25:48.105: E/AndroidRuntime(32296): at android.app.ActivityThread.handleSendResult(ActivityThread.java:3362) 
07-29 17:25:48.105: E/AndroidRuntime(32296): at android.app.ActivityThread.access$1100(ActivityThread.java:141) 
07-29 17:25:48.105: E/AndroidRuntime(32296): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1282) 
07-29 17:25:48.105: E/AndroidRuntime(32296): at android.os.Handler.dispatchMessage(Handler.java:99) 
07-29 17:25:48.105: E/AndroidRuntime(32296): at android.os.Looper.loop(Looper.java:137) 
07-29 17:25:48.105: E/AndroidRuntime(32296): at android.app.ActivityThread.main(ActivityThread.java:5041) 
07-29 17:25:48.105: E/AndroidRuntime(32296): at java.lang.reflect.Method.invokeNative(Native Method) 
07-29 17:25:48.105: E/AndroidRuntime(32296): at java.lang.reflect.Method.invoke(Method.java:511) 
07-29 17:25:48.105: E/AndroidRuntime(32296): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
07-29 17:25:48.105: E/AndroidRuntime(32296): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
07-29 17:25:48.105: E/AndroidRuntime(32296): at dalvik.system.NativeStart.main(Native Method) 
07-29 17:25:48.105: E/AndroidRuntime(32296): Caused by: java.lang.NullPointerException 
07-29 17:25:48.105: E/AndroidRuntime(32296): at android.graphics.Bitmap.createScaledBitmap(Bitmap.java:474) 
07-29 17:25:48.105: E/AndroidRuntime(32296): at com.example.news_app.android.ui.SettingsActivity.onActivityResult(SettingsActivity.java:84) 
07-29 17:25:48.105: E/AndroidRuntime(32296): at android.app.Activity.dispatchActivityResult(Activity.java:5293) 
07-29 17:25:48.105: E/AndroidRuntime(32296): at android.app.ActivityThread.deliverResults(ActivityThread.java:3315) 
07-29 17:25:48.105: E/AndroidRuntime(32296): ... 11 more 

這裏是我使用的方法:

protected void onActivityResult(int requestCode, int resultCode, 
     Intent imageReturnedIntent) { 
    super.onActivityResult(requestCode, resultCode, imageReturnedIntent); 

    if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) { 
     Uri selectedImage = imageReturnedIntent.getData(); 
     InputStream imageStream = null; 
     try { 
      imageStream = getContentResolver().openInputStream(selectedImage); 
     } catch (FileNotFoundException e) { 
      Log.d("onActivityResult", "FileNotFoundException"); 
      e.printStackTrace(); 
     } 
     Bitmap unscaledImage = BitmapFactory.decodeStream(imageStream); 
     image = Bitmap.createScaledBitmap(unscaledImage, IMAGE_SIZE, IMAGE_SIZE, false); 
     Log.d("Unscaled image byte count", "Bytes: " + unscaledImage.getByteCount()); 
     Log.d("Scaled image byte count", "Bytes: " + image.getByteCount()); 
    } 
} 

謝謝您的幫助!

+0

您可以檢查您的烏里selectedImage不爲空,這些圖像?也許有問題。也可能是圖像已損壞。 – Moy

+0

您應該重新讀取堆棧跟蹤,因爲它與加載位圖無關。看起來你正在嘗試重新查找一個已經關閉的遊標。 – Qberticus

+0

嗨@Moises, 我檢查了URI,它不爲空。例如,路徑是/ picasa/item/5716149895129356946在一個圖像上崩潰。圖像不太可能被破壞,因爲它們來自兩個不同的來源(Google圖片和Picassa),而且相機拍攝的其他圖像正常工作。某些類型的圖像可能不受支持? – cheese1756

回答

3

的問題是,這些照片是從Picasa,所以他們不存儲在SD,創造一個NullPointerException異常。您可以設置

intent.putExtra(Intent.EXTRA_LOCAL_ONLY, true) 

在啓動限制畫廊中的物品僅限於SD卡上的活動之前。如果我找到一個,我會發佈一個更好的解決方案。

+0

我也面臨同樣的問題,你有沒有找到解決方案。非常感謝。 liang – Jacky

+0

不幸的是,我還不知道更好的解決方案。大多數用戶不會在我的應用程序中拉動遠程照片,所以這對我來說不是一個破壞行爲(我只是將它用於頭像圖像)。看起來,您可以先下載Picasa照片,然後將其導入到圖庫中,但這可能需要相當多的代碼。谷歌搜索後,它似乎也可以指示用戶長按圖像,並選擇「保存圖像」,但這並不理想。我希望這有幫助。 – cheese1756

相關問題