2012-08-06 10 views
26

tengo un URI como la que tiene una imagen¿Cómo obtener un mapa de bits desde una url en Android?

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

Cómo utilizar este URI para obtener la imagen sino que devuelve un valor nulo, por favor, dime dónde estoy equivocado.

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

Respuesta

79

Ésta es una manera simple de una línea de hacerlo:

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

Eso no es un trazador de líneas, ya que la creación de su objeto url debe estar rodeada de try-catch. – portfoliobuilder

+0

La idea era una forma de una línea para obtener el mapa de bits dado que ya había definido una url. – brthornbury

+4

'url.openConnection(). GetInputStream()' se puede reemplazar con simplemente 'url.openStream()' –

16

Esto debe hacer el truco:

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 

No se olvide de agregar el permiso a internet en su manifiesto.

+0

¿Qué tal mi url tiene conexión https? –

1

Bueno por lo que usted está tratando de obtener un mapa de bits de un archivo? El título dice URL. De todos modos, cuando obtenga archivos de almacenamiento externo en Android, nunca debería usar una ruta directa. En lugar llamar getExternalStorageDirectory(), así:

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

getExternalStorageDirectory() le da la ruta de acceso a la tarjeta SD. También necesita declarar el permiso WRITE_EXTERNAL_STORAGE en el Manifiesto.

Cuestiones relacionadas