我正在嘗試在用戶從圖片庫中選擇的圖像上獲取FileInputStream
對象。這是Android URI
返回由android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI
Android-如何將android.net.Uri對象轉換爲java.net.URI對象?
內容://媒體/外部/圖像/媒體/ 3
當我嘗試從該對象構造一個java URI對象,我得到異常說明一個IllegalArgumentException在URI 預期文件方案:內容://媒體/外部/圖像/媒體/ 3而機器人URI示出了方案爲內容
決不發現原來的問題的解決方案。但是如果你想要圖片庫中的圖片的字節流,這段代碼就可以做到這一點。
Bitmap bitmap = Media.getBitmap(getContentResolver(), imageUri);
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 40, bytes);
ByteArrayInputStream fileInputStream = new ByteArrayInputStream(bytes.toByteArray());
感謝。試過了。它給出了一個例外(java.net.URI應該有一個有效的方案) – lostInTransit 2009-02-19 12:37:28
這是錯誤的,如果URI具有需要編碼的字符(如空格)將會失敗。 android.net.Uri.toString()解碼已編碼的字符,如果您嘗試在非編碼的字符串上構造它,java.net.URI將拋出異常。正確的解決方案`huri = new java.net.URI(URLEncoder.encode(auri.toString(),「UTF-8」));` – 2013-03-01 18:45:32
@Jeffrey:Uri.toString()返回我的Android 4.1.2上的編碼字符設備 – 2013-03-20 15:34:44