2015-04-14 10 views
5

Sto sviluppando un'app in cui voglio scaricare l'immagine dall'URL. Devo scaricare queste immagini in una sola volta e salvarle nella memoria interna. Ci sono più di 200 immagini da scaricare. Per favore dimmi il modo migliore per scaricare queste immagini nel minor tempo possibile. Se è disponibile una libreria di terze parti, la prego di dirlo.Il modo migliore per scaricare l'immagine dall'URL e salvarla nella memoria di archiviazione interna

+0

È possibile utilizzare Picasso o Volley –

+0

Picasso non lo fa salva queste immagini nella memoria interna. mostra direttamente su ui –

+1

Puoi usare Volley lib e creare una richiesta personalizzata che scrive la tua immagine direttamente nella memoria del dispositivo in caso di risposta positiva. – Bubu

risposta

19

Considerare l'utilizzo di Picasso per il proprio scopo. Lo sto usando in uno dei miei progetti. Per salvare l'immagine sul disco esterno è possibile utilizzare seguente:

Picasso.with(mContext) 
     .load(ImageUrl) 
     .into(new Target() { 
      @Override 
      public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) { 
       try { 
        String root = Environment.getExternalStorageDirectory().toString(); 
        File myDir = new File(root + "/yourDirectory"); 

        if (!myDir.exists()) { 
         myDir.mkdirs(); 
        } 

        String name = new Date().toString() + ".jpg"; 
        myDir = new File(myDir, name); 
        FileOutputStream out = new FileOutputStream(myDir); 
        bitmap.compress(Bitmap.CompressFormat.JPEG, 90, out); 

        out.flush(); 
        out.close();       
       } catch(Exception e){ 
        // some action 
       } 
      } 

      @Override 
      public void onBitmapFailed(Drawable errorDrawable) { 
      } 

      @Override 
      public void onPrepareLoad(Drawable placeHolderDrawable) { 
      } 
     } 
    ); 

From here è possibile scaricare questa libreria.

+0

voglio scaricare 200 immagini. per questo ho bisogno di loop per scaricare queste immagini –

+0

@astuter puoi spiegarmi come recuperare l'immagine dopo averla salvata? – Signo

+1

@Signo: Controlla la risposta di Dhawal Shoda parmar, in questo link: http://stackoverflow.com/a/15918369/2571277 – astuter

5

È possibile scaricare Th da un URL simile a questo:

URL url = new URL("http://www.yahoo.com/image_to_read.jpg"); 
InputStream in = new BufferedInputStream(url.openStream()); 
ByteArrayOutputStream out = new ByteArrayOutputStream(); 
byte[] buf = new byte[1024]; 
int n = 0; 
while (-1!=(n=in.read(buf))) 
{ 
    out.write(buf, 0, n); 
} 
out.close(); 
in.close(); 
byte[] response = out.toByteArray(); 

E si può quindi desiderare di salvare l'immagine in modo da fare:

FileOutputStream fos = new FileOutputStream("C://borrowed_image.jpg"); 
fos.write(response); 
fos.close(); 
Problemi correlati