Comment puis-je télécharger et enregistrer des images à partir du Web?

J’essaie de créer une application Windows Phone 7 qui enregistrera des images du Web. Je ne sais pas où je peux ou si je peux enregistrer des images du Web sur le téléphone.

Que puis-je faire pour enregistrer des images?

Sur le téléphone, vous pouvez utiliser HttbWebRequest (recommandé pour éviter tout impact sur l’interface utilisateur) ou WebClient selon le projet que j’ai posté ici.

WebClient, HttpWebRequest et le thread de l’interface utilisateur sur Windows Phone 7

Vous pouvez ensuite prendre votre stream et le transférer dans quelque chose de ce formulaire pour l’écrire dans un stockage isolé.

private void PicToIsoStore(Stream pic) { using (var isoStore = IsolatedStorageFile.GetUserStoreForApplication()) { var bi = new BitmapImage(); bi.SetSource(pic); var wb = new WriteableBitmap(bi); using (var isoFileStream = isoStore.CreateFile("somepic.jpg")) { var width = wb.PixelWidth; var height = wb.PixelHeight; Extensions.SaveJpeg(wb, isoFileStream, width, height, 0, 100); } } } 

Jon est correct, vous pouvez également utiliser MediaLibrary.SavePicture. Sachez que cela mettrait les images mélangées avec les photos des utilisateurs dans le hub photos.

C’est aussi simple que

 private void PicToMediaLibary(Stream pic) { MediaLibrary lib = new MediaLibrary(); lib.SavePicture("blah", pic); } 

Le stocker dans un stockage isolé est essentiellement le système de fichiers privé de votre application.

Vous pouvez les télécharger à l’aide de WebClient ou WebRequest pour obtenir les octets bruts.

Vous pouvez ensuite enregistrer assez facilement sur un stockage isolé – mais je ne pense pas que vous puissiez enregistrer dans un emplacement visité par le hub Picture, si c’est ce que vous visiez. (Je ne vois rien dans l’ espace de noms Microsoft.Phone.Tasks qui soit pertinent. Il existe des tâches pour capturer l’appareil photo ou choisir une photo, mais pas pour en enregistrer une.)

EDIT: Ooh, je viens de trouver un moyen. Vous pouvez utiliser la classe MediaLibrary et sa méthode SavePicture … bien que cela soit dans XNA, donc je crains au moins que cela fonctionne depuis une application Silverlight. Je sais que certains éléments de l’API XNA fonctionnent à partir de Silverlight, d’autres non. Ça vaut la peine d’expérimenter.