Magazine

Android: scaricare immagini dal web (con gestione del caching)

Creato il 24 agosto 2010 da Andreafortuna @AndyF

Uno snippet per effettuare il download di una immagine da internet (da usare, ad esempio, come sorgente per una ImageView) con la gestione del caching dei file già scaricati e la possibilità di passare delle opzioni per la modifica della qualità delle immagini.

public static Bitmap downloadImage(String fileUrl, BitmapFactory.Options options, Context context){
Bitmap bmImg = null;
URL myFileUrl =null;
try {
myFileUrl= new URL(fileUrl);
} catch (MalformedURLException e) {
e.printStackTrace();
}

try {

String encodedfilename = Base64.encodeBytes(fileUrl.getBytes());

//Controllo presenza della cache
try {
InputStream check = context.openFileInput(encodedfilename);
} catch (FileNotFoundException e) {
// Se non presente, scarico il file

HttpURLConnection conn= (HttpURLConnection)myFileUrl.openConnection();
conn.setDoInput(true);
conn.connect();
InputStream is = conn.getInputStream();


//Salvataggio cache
FileOutputStream fos = context.openFileOutput(encodedfilename, Context.MODE_PRIVATE);
byte[] buffer = new byte[1024];
int len1 = 0;
while ( (len1 = is.read(buffer)) > 0 ) {
fos.write(buffer,0, len1);
}

fos.close();
}

 bmImg = BitmapFactory.decodeStream(context.openFileInput(encodedfilename),null,options);


 } catch (IOException e) {

e.printStackTrace();
 }
return bmImg;
 }


Un rapido esempio di utilizzo:

BitmapFactory.Options options=new BitmapFactory.Options();
//Setto la qualità dell'immagine        
options.inSampleSize = 8;

imageView1.setImageBitmap(downloadImage(URL_IMMAGINE, options,getContext()));


Filed under: Android, featured, Java, Programmazione

Ritornare alla prima pagina di Logo Paperblog