2017-03-07 12 views
1

で選択された画像から画像の正確なファイルサイズを取得しますこれは私がどのように取得することができ、ファイル選択ギャラリー

private void showFileChooser() { 
    Intent intent = new Intent(); 
    intent.setType("image/*"); 
    intent.setAction(Intent.ACTION_GET_CONTENT); 
    startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE_REQUEST); 
} 

その後、onActivityResult()

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data != null && data.getData() != null) { 

     filePath = data.getData(); 
     try { 
      bitmap = MediaStore.Images.Media.getBitmap(getActivity().getContentResolver(), filePath); 

      System.out.println(bitmap.getByteCount()); 

      int w = bitmap.getWidth(); 
      int h = bitmap.getHeight(); 



      if (w!= 512 || h!= 512) 
      { 
       txvLogoError.setText("Invalid image dimensions. Please choose another."); 
      } 
      else 
      { 
       txvLogoError.setText(""); 
       imbAppLogo.setPadding(10,10,10,10); 
       imbAppLogo.setImageBitmap(bitmap); 
      } 


     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

私の質問があるのために私のコードですイメージの正確なファイルサイズが選択されていますか?私は(File.lengthを試してみました)が、結果はそうでなければ、あなたが

Cursor returnCursor = getContentResolver().query(filePath, null, null, null, null); 

int nameIndex = returnCursor.getColumnIndex(OpenableColumns.DISPLAY_NAME); 
int sizeIndex = returnCursor.getColumnIndex(OpenableColumns.SIZE); 
+0

ファイルが存在する場合は、file.length()でサイズを指定してください。ファイルの存在を最初に確認してみてください。 – sadat

+0

さて、私は試してみるだろうが、私の画像のボタンで私が選んだ画像は –

+0

を参照してください。http://www.mkyong.com/java/how-to-file-size-in-java/ –

答えて

10

これを試してみてくださいを試すことができます0

+0

原因:java.lang.IllegalArgumentException:URI:content:// media/external/images/media/12973 –

+0

ところで、Uriを使用しています –

+0

@Paul編集済みの回答を参照してください:) –

0

次のことを試して、

File f = new File(filePath.getPath()); 
long size = f.length(); 

です。

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     int dataSize=0; 
     if (requestCode == 2 && resultCode == RESULT_OK) 
     { 
      Uri uri = data.getData(); 
      String scheme = uri.getScheme(); 
      System.out.println("Scheme type " + scheme); 
      if(scheme.equals(ContentResolver.SCHEME_CONTENT)) 
      { 
       try { 
        InputStream fileInputStream=getApplicationContext().getContentResolver().openInputStream(uri); 
        dataSize = fileInputStream.available(); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
       System.out.println("File size in bytes"+dataSize); 

      } 
      else if(scheme.equals(ContentResolver.SCHEME_FILE)) 
      { 
       String path = uri.getPath(); 
       try { 
        f = new File(path); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
       System.out.println("File size in bytes"+f.length()); 
      } 

     } 
    }