2011-04-10 11 views
3

Bonjour l'application que je construis fonctionne avec beaucoup d'images qui sont stockées sur le serveur et doivent les afficher sur une liste. J'aimerais pouvoir les stocker dans un fichier.Monodroid enregistrer l'image de l'url

est jusqu'à présent ici le code que j'ai

var imageUrl = new Java.Net.URL(obj.imageUrl); 
var bitmap = Android.Graphics.BitmapFactory.DecodeStream(imageUrl.OpenStream()); 
var image = new Android.Graphics.Drawables.BitmapDrawable(bitmap); 

mais je ne sais pas comment enregistrer l'image ou où l'enregistrer.

toute aide?

merci

Répondre

7

Vous êtes supérieur à cela. :-)

Une fois que vous avez un Stream:

var imageUrl = new Java.Net.URL(obj.imageUrl); 
System.IO.Stream stream = imageUrl.OpenStream(); 

vous pouvez simplement l'enregistrer sur le disque:

using (var o = File.Open(
     Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), 
      "file-name"))) { 
    byte[] buf = new byte[1024]; 
    int r; 
    while ((r = stream.Read(buf, 0, buf.Length)) > 0) 
     o.Write (buf, 0, r); 
} 

Environment.GetFolderPath(Environment.SpecialFolder.Personal) retourne $ appdir/fichiers, ce qui est Context.FilesDir. Vous n'avez pas nécessairement besoin de l'utiliser; Context.CacheDir peut être plus approprié.

+0

merci jonp. Je pense que le cache serait mieux, mais juste pour s'assurer que c'est le chemin que je devrais utiliser? System.Environment.SpecialFolder.InternetCache – adam

+0

ne jamais oublier jonp ** this.ApplicationContext.CacheDir.ToString(); ** compris. Mais bon merci beaucoup pour votre code je l'apprécie vraiment! – adam