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