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