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



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




Published: August 24 2010

  • category: