2012-08-06 19 views
26

Ich habe ein uri wie der hat ein BildWie bekomme ich eine Bitmap von einer URL in Android?

file:///mnt/............... 

Wie diese uri verwenden, um das Bild zu bekommen, aber es gibt null zurück, bitte sagen Sie mir, wo ich falsch bin.

Bitmap bitmap = BitmapFactory.decodeFile(uri.getPath()); 
Bitmap bitmap = BitmapFactory.decodeFile(uri.toString()); 

Antwort

79

Dies ist eine einfache Linie Weg, es zu tun:

try { 
     URL url = new URL("http://...."); 
     Bitmap image = BitmapFactory.decodeStream(url.openConnection().getInputStream()); 
    } catch(IOException e) { 
     System.out.println(e); 
    } 
+2

Das ist kein One-Liner, da das Erstellen Ihres URL-Objekts in Try-Catch umgeben sein sollte. – portfoliobuilder

+0

Die Idee war ein Ein-Zeilen-Weg, um die Bitmap zu erhalten, vorausgesetzt, Sie hatten bereits eine URL definiert. – brthornbury

+4

'url.openConnection(). GetInputStream()' kann mit einfach ersetzt werden 'url.openStream()' –

16

Dies sollte den Trick:

public static Bitmap getBitmapFromURL(String src) { 
    try { 
     URL url = new URL(src); 
     HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 
     connection.setDoInput(true); 
     connection.connect(); 
     InputStream input = connection.getInputStream(); 
     Bitmap myBitmap = BitmapFactory.decodeStream(input); 
     return myBitmap; 
    } catch (IOException e) { 
     e.printStackTrace(); 
     return null; 
    } 
} // Author: silentnuke 

Vergessen Sie nicht, die Internet-Erlaubnis in Ihrem Manifest hinzuzufügen.

+0

Wie hat meine URL https Verbindung? –

1

Okay, so dass Sie eine Bitmap aus einer Datei zu bekommen versuchen? Titel sagt URL. Wenn Sie Dateien von externem Speicher in Android bekommen, sollten Sie niemals einen direkten Pfad verwenden. Stattdessen rufen getExternalStorageDirectory() wie folgt:

File bitmapFile = new File(Environment.getExternalStorageDirectory() + "/" + PATH_TO_IMAGE); 
Bitmap bitmap = BitmapFactory.decodeFile(bitmapFile); 

getExternalStorageDirectory() gibt Ihnen den Weg auf die SD-Karte. Außerdem müssen Sie die WRITE_EXTERNAL_STORAGE-Berechtigung im Manifest deklarieren.

Verwandte Themen