2017-11-02 10 views
1

私は@AlexanderZaldostanov codeを使用して、私が使用中の無関係な、最終的にはないと思われるコードの一部に疑問を持っているしかし、それは完全にはアンドロイドstudion内のギャラリーから画像を取得する - 無関係なコード

働いていました。

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

    if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data) { 
     Uri selectedImage = data.getData(); 
     String[] filePathColumn = { MediaStore.Images.Media.DATA }; 

     Cursor cursor = getContentResolver().query(selectedImage, 
       filePathColumn, null, null, null); 
     cursor.moveToFirst(); 

     int columnIndex = cursor.getColumnIndex(filePathColumn[0]); 
     String picturePath = cursor.getString(columnIndex); 
     cursor.close(); 

     ImageView imageView = (ImageView) findViewById(R.id.imgView); 

     Bitmap bmp = null; 
     try { 
      bmp = getBitmapFromUri(selectedImage); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     imageView.setImageBitmap(bmp); 

    } 


} 

String[] filePathColumn = { MediaStore.Images.Media.DATA };ラインの始点とcursor.close(); のすべての方法から終わりBitmapUriを取得し、それをthatsの。

なぜ残りのコードはすべて中間に必要ですか?あなただけのUriからBitmapを取得したい場合は、真ん中のコードを必要としません

+0

私はあなたが 'selectedImage'で画像を読み込むことができると感じています。' imageView.setImageURI(selectedImage) ' –

答えて

0

おかげで、。

イメージのパスが必要な場合は、ファイルをリモートサーバーにアップロードするには、そのコードを使用してイメージのパスを取得します。しかし、イメージのパスを得るためにこのメソッドに頼るべきではありません。あなたは、単にimageView.setImageURI(selectedImage)

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

    if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data) { 
     Uri selectedImage = data.getData(); 

     ImageView imageView = (ImageView) findViewById(R.id.imgView); 
     imageView.setImageURI(selectedImage);   

    }  

} 

、あなたがサーバーにそのコードが使用されている、あなたのイメージをアップロードする必要がある場合に必要な画像のパスを使用してImageviewに表示することができますよりも、あなたがImageviewで撮影した画像に必要がある場合は

+2

を使用して、画像のパスを取得するコードを使用します。 'Uri'に' Content'スキームがあり、 'MediaStore'から来たのであれば動作します。その場合でも、結果のパスは使用できない可能性があります。 – CommonsWare

0

イメージのパスを取得します。

イメージURIから元のパスを取得します。

0

ギャラリーから画像を選択すると、別のセクションから同じ画像を選択する可能性があります。 folder Aから画像を選択でき、同じ画像をrecentsから取り出すことができるとします。

例:ギャラリーから、それはあなたの

content://media/external/images/media/123 

を与える可能性と更新ムービーからそれがcontent://com.android.providers.media.documents/document/image:132

URIは選択がから作られている場所に応じて、異なる可能性が返されたコンテンツを与える可能性があります。特に、ストレージアクセスフレームワーク(SAF)を導入したKitkat(APIレベル19)以降、写真を選択する際にすべてのドキュメントストレージプロバイダを見ることができます。私たちは途中でコードの残りのすべてを必要としないのはなぜ

コードの一部は、

+0

downvotingの前に説明してください – Anonymous

+0

はいあなたは正しいです@名無しさん@お友達を意図的に投票しています私はこれが彼らの人にとって良い答えだと思う –

0

イメージファイルの直接ファイルシステムパスが返されますか?

あなたはありません。

このコードはかなり悪いので、最初に使用するべきではありません。 Uriはファイルではなく、UriMediaStoreかそれ以外であるかにかかわらず、ファイルを指す必要はありません。

関連する問題