2016-09-24 2 views
0

Ich möchte lo laden Sie das Bild von URL und speichern Sie es in einer Datei in SD-Karte und laden Sie dann aus der Datei und zeigen Sie in der Bildansicht.Verwenden von Picasso, um Bild von der URL

Also versuche ich Bild mit Picasso zu laden. Aber es zeigt nicht auf der Bildansicht.

Hier url:

http://xesoftwares.co.in/contactsapi/profile_images/d34b638b93773140eb94d5f03c20237c.jpg

Lade Bild mit picasso.

Picasso.with(MainActivity.this).load(url).into(profileImage); 

So laden Sie das Bild von der URL. Speichern Sie es in der Datei in SD-Karte und laden Sie dann das Bild aus der Datei in der Bildansicht anzeigen?

Bitte helfen. Danke ..

+1

Möchten Sie wirklich auf SD-Karte speichern? Picasso wird herunterladen, wann immer Sie das Bild anzeigen und in Anwendungscache speichern möchten – Stallion

+0

ok, aber warum es nicht funktioniert? @Stallion – Sid

+0

Setzen Sie Ihre verwandten vollständigen Code als eine einzige Zeile mit Manifest-Berechtigung auch – Stallion

Antwort

3

Verwenden GLIDE Bibliothek es speichert automatisch Ihr Bild in Cache .....

Glide.with(context).load(url).into(profileImage); 

Hinweis: - Nur erstes Mal, wenn Sie Internet für das Laden Bild benötigen. Wenn Bild laden funktioniert es ohne Internet.

EDIT: - Verwenden Sie diese gradle

compile 'com.github.bumptech.glide:glide:3.7.0' 

Ausgang: -

o

+0

Pfad zum Kompilieren der Bibliothek? @sushildlh – Sid

+0

aber warum Picasso nicht funktioniert? @sushildlh – Sid

+1

Picasso funktioniert gut ... kann einige OutMerroyExcepton in Ihrem Gerät überprüfen Sie Ihre LagCat Fehler ..... In Frage ich aktualisierte Ausgabe .... – sushildlh

0

Um es in SD-Karte zu speichern, müssen Sie erklären, Berechtigungen schreiben von SD-Karte in Manifest schreiben, fragen Sie auch Benutzer für diese Berechtigungen für Android 5.0 und höher. All dies ist eindeutig in Android-Entwickler offiziellen Website dokumentiert. ändern MainActivity.class zu getApplicationContext()

+0

Ich habe die Berechtigungen deklariert. Problem ist, dass es nicht geladen [email protected] koleci – Sid

+0

Hast du die Änderung gemacht, die ich vorgeschlagen habe? –

+0

Picasso speichert auch im Cache. Du brauchst nicht gleiten. –

0

Anzahl:

<manifest ...> 
    <uses-permission android:name="android.permission.INTERNET" /> 

In Ihrem Manifest-Datei, da sonst die Quelle kann nicht heruntergeladen werden .

Wenn Sie es in SD-Karte speichern möchten, müssen Sie eine andere Berechtigung:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

Um es zu retten.

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 

Wenn Sie diese Datei in Zukunft erhalten möchten.

Weiter, wenn Sie es zu einem externen Verzeichnis speichern möchten, können Sie dies versuchen:

public void setUpDirectory(String folderName,String source){ 

     File directory = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+File.separator+folderName); 

     if(!directory.exists() && !directory.isDirectory()) { 
      directory.mkdirs(); 
     } 

     URL imageurl = new URL(source); 
     Bitmap bitmap = BitmapFactory.decodeStream(imageurl.openConnection().getInputStream()); 
     saveFile(directory,bitmap); 
    } 


private void saveFile(File fileName,Bitmap bmp){ 


FileOutputStream outputStream = null; 
try { 
    outputStream = new FileOutputStream(fileName); 
    bmp.compress(Bitmap.CompressFormat.PNG, 100, outputStream); // 100 will be ignored 
} catch (Exception e) { 
    e.printStackTrace(); 
} 
finally { 
    try { 
     if outputStream != null) { 
      outputStream .close(); 
     } 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 


} 
0

Wenn Sie ein Bild als Hintergrund der Image in xml es entfernen gesetzt worden.

+0

Setzen Sie diese als Kommentar oder bearbeiten Sie Ihre bestehende Antwort .. – Stallion