2014-03-19 21 views
0

我試圖從圖片庫,然後上傳它的文件。Android - 當runnig bitmap.compress,它總是進入FileNotFoundException

但是在上傳過程之前,我想壓縮圖像文件。

所以這是當圖像被選擇,我將文件保存路徑在一個全局變量(字符串selectedPath1)的代碼 -

  if (resultCode == RESULT_OK) { 
      Uri selectedImageUri = data.getData(); 
      if (requestCode == SELECT_FILE1) 
      { 
       selectedPath1 = getPath(selectedImageUri); 
      } 
      } 

然後我用下面的代碼來壓縮圖像 -

try { 
     Log.d("MAIN", "1"); 
     compressedPictureFile = new File(selectedPath1); 
     Log.d("MAIN", "2"); 
     Bitmap bitmap = BitmapFactory.decodeFile(selectedPath1); 
     Log.d("MAIN", "3"); 
     FileOutputStream fOut = new FileOutputStream(compressedPictureFile); 
     Log.d("MAIN", "4"); 
     boolean compressed = bitmap.compress(Bitmap.CompressFormat.JPEG, 90, fOut); 
     Log.d("MAIN", "E5"); 

     if (compressed){ 
      Log.d("MAIN", "E6"); 
     }else{ 
      Log.d("MAIN", "E7"); 
     } 
     Log.d("MAIN", "E8"); 
     fOut.flush(); 
     fOut.close(); 

    } catch (FileNotFoundException e1) { 
     Log.d("MAIN", "E1"); 
     e1.printStackTrace(); 
    } catch (IOException e1) { 
     Log.d("MAIN", "E2"); 
     e1.printStackTrace(); 
    } 

當我乳寧的代碼,我的,因爲它使所述的logcat見[Log.d(「MAIN」,「3」);]線,然後將其表示 - [日誌.d(「MAIN」,「E1」);]。

也就意味着問題是下一行 -

FileOutputStream fOut = new FileOutputStream(compressedPictureFile); 

那我做錯了什麼?我如何解決它?

感謝

回答

2

您還沒有創建任何文件,該行添加到您的代碼,並嘗試任何形式的幫助

compressedPictureFile = new File(selectedPath1); 
    if (!compressedPictureFile.exists()) { 
     compressedPictureFile.createNewFile(); 
    } 

說太多,如果文件路徑爲SD卡,然後添加此權限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
相關問題