2017-11-02 2 views
1

habe ich @AlexanderZaldostanov code und es funktionierte perfektbekommen ein Bild aus einer Galerie in android studion - irrelevant Code

aber ich eine Frage zu einem Teil des Codes haben, die irrelevant scheint und schließlich nicht in Gebrauch ist.

@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); 

    } 


} 

von Anfang an der String[] filePathColumn = { MediaStore.Images.Media.DATA }; Linie und den ganzen Weg zum cursor.close(); Am Ende der Bitmap bekommt die Uri und das ist es.

Warum brauchen wir den ganzen Rest des Codes in der Mitte?

Danke,

+0

Ich glaube, dass Sie in der Lage sein sollten, Bild mit 'selectedImage' zu ​​laden. Verwenden Sie' imageView.setImageURI (selectedImage) ' –

Antwort

0

Sie den Code in der Mitte nicht brauchen, wenn Sie wollen einfach nur eine Bitmap vom Uri zu bekommen.

Wenn Sie den Pfad des Bildes, z. Um die Datei auf den Remote-Server hochzuladen, wird dieser Code verwendet, um den Pfad des Bildes zu erhalten. Aber Sie sollten sich nicht auf diese Methode verlassen, um den Pfad des Bildes zu erhalten.

+2

" dann wird dieser Code verwendet, um den Pfad des Bildes zu erhalten "- dieser Code wird nur funktionieren, wenn das 'Uri'' content' Schema hat und aus dem 'MediaStore' stammt. Selbst dann ist der resultierende Pfad möglicherweise nicht verwendbar. – CommonsWare

0

, wenn Sie in Imageview zu aufgenommenem Bild benötigen, als Sie einfach in Imageview mit 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);   

    }  

} 

und dem Pfad des Bildes erforderlich angezeigt werden können, wenn Sie Ihr Bild in Server laden müssen dann dieser Code verwendet wird, um den Pfad des Bildes zu erhalten.

wird der ursprüngliche Pfad aus dem Image-URI abgerufen.

0

Da, wenn Sie ein Bild aus der Galerie auswählen, gibt es verschiedene Möglichkeiten, das gleiche Bild aus verschiedenen Abschnitten auszuwählen. Nehmen wir an, Sie können ein Bild von folder A auswählen und dasselbe Bild kann auch von recents geholt werden.

Ex: Aus Galerie kann es geben Sie

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

und von recents kann es content://com.android.providers.media.documents/document/image:132

Der Inhalt URI zurückgegeben wird, kann unterschiedlich sein geben je nachdem, wo die Auswahl aus gemacht wurde. Insbesondere seit Kitkat (API Level 19), das das Storage Access Framework (SAF) einführt, können Sie alle Ihre Dokumentenspeicheranbieter sehen, während Sie ein Foto auswählen.

Das Stück Code gibt es den direkten Dateisystempfad der Bilddatei zurückkehren

+0

Bitte geben Sie eine Erklärung, bevor Sie – Anonymous

+0

ja Sie sind richtig @Anonymous einige Kumpel absichtlich abstimmen Ihren Beitrag Ich denke, das ist eine gute Antwort Schande über diese Leute –

0

Warum wir alle der Rest des Codes in der Mitte brauchen?

Sie nicht.

Und da dieser Code ziemlich schlecht ist, sollten Sie ihn nicht an erster Stelle verwenden. Eine Uri ist keine Datei, und sie muss nicht auf eine Datei zeigen, egal ob Uri von der MediaStore oder anderswo ist.

Verwandte Themen