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