2013-07-03 41 views
0

上下文: 我正在創建一個簡單的應用程序,用戶在其中點擊一個按鈕,他們從手機中選擇一張圖片,圖像將顯示在應用程序中。我通過啓動用戶選擇圖像的意圖來實現此目的。Android - 使用帶有jpeg文件的BitmapFactory.decodefile不起作用

問題: 當用戶選擇圖片時,如果它是.jpg文件,則不顯示。但是,如果它是.png文件,則按預期工作。

注: 我驗證過的位圖的結果不是null,還有來自decodefile方法

在logcat中沒有任何錯誤或任何消息,任何幫助,將不勝感激

代碼:

public void onActivityResult(int requestCode, int resultCode, Intent data) 
{ 
if (requestCode == SELECT_PICTURE) 
{ 
    Uri selectedImageUri = data.getData(); 
    selectedImagePath = getPath(selectedImageUri); 
    Toast.makeText(getApplicationContext(), "path is " + selectedImagePath, Toast.LENGTH_LONG).show(); 
    ImageView image = (ImageView)findViewById(R.id.selectedImage); 

    if (image == null) 
     Toast.makeText(getApplicationContext(), "No image to update", Toast.LENGTH_SHORT).show(); 

    Bitmap result = BitmapFactory.decodeFile(selectedImagePath); 

    if (result == null) 
     Toast.makeText(getApplicationContext(), "Couldn't upload image because it's null", Toast.LENGTH_LONG).show(); 

    image.setImageBitmap(result); 
} 

}

+0

標記此問題已解決,出於某種原因,我的代碼現在可以工作,但我沒有更改任何內容。 – MrAppa

回答

-1

這很奇怪,但我的代碼現在正在工作,但我沒有改變任何東西。

0

你能嘗試用一個InputStream。像這樣:

if (requestCode == SELECT_PICTURE){ 
    Uri selectedImageUri = data.getData(); 
    InputStream inputStream; 
    try { 
     inputStream = getContentResolver().openInputStream(selectedImageUri); 
     BufferedInputStream bis = new BufferedInputStream(is); 
     Bitmap bitmap = BitmapFactory.decodeStream(bis);    
     ImageView image = (ImageView)findViewById(R.id.selectedImage); 
     image.setImageBitmap(bitmap);      
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } 
} 
+0

請告訴我,如果這與你合作:) –

+0

嗨拉爾普,不幸的是,沒有工作。我仍然看到和以前一樣的行爲。 logcat中仍然沒有錯誤。 – MrAppa

+0

奇怪的是,我原來的解決方案現在工作正常....我沒有改變任何東西。 – MrAppa

相關問題