2016-05-28 83 views
0

的Manifest.xmlBitmapFactory.decodeFile()返回null

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-feature 
    android:name="android.hardware.camera2" 
    android:required="true" /> 
<uses-feature android:name="android.hardware.camera" /> 
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

按鈕OnClickListner

button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
      getFileUri(); 
      i.putExtra(MediaStore.EXTRA_OUTPUT, file_uri); 
      startActivityForResult(i, 10); 
     } 
}); 

getFileUri()

private void getFileUri() { 
    image_name = "testing123.jpg"; 
    file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) 
      + File.separator + image_name); 
    file_uri = Uri.fromFile(file); 
} 

OnActivityResult()所有的

if(requestCode == 10 && resultCode == RESULT_OK){ 
    bitmap = BitmapFactory.decodeFile(file_uri.getPath()); 
    ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
    bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream); 

    byte[] array = stream.toByteArray(); 
    encoded_string = Base64.encodeToString(array, 0); 
} 

首先,有這許多類似的問題,但他們都不適合我的情況。

我試圖發送圖像到我的服務器後拍照,但我有一個BitmapFactory.decodeFile()的問題。問題是它會返回null,即使拍攝的照片存在於我的畫廊中。我認爲真正的問題是我的照片的大小,它通常在3.0 MB和5.0 MB之間。但是,我無法確定,因爲它沒有告訴我爲什麼它不能被解碼。

的代碼是來自:https://www.youtube.com/watch?v=dV46_-AS4Pg

+0

file_uri檢查是否是通過打印logcat的 –

+0

值實際上無效代碼,找到媒體存儲設備的絕對URI,我試過了,路徑工作正常。 – MyNameIsAsker

回答

0

試圖通過應用下面

Cursor c=getContentResolver().query(file_uri.getData(),new String[]{MediaStore.Images.Media.DATA},null,null,null); 
c.moveToFirst(); 
    String path=c.getString(c.getColumnIndex(MediaStore.Images.Media.DATA)); 

    BitmapFactory.decodeFile(path); 
相關問題