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
