5

Debido a mi falta de experiencia en programación (3 meses) no he podido recrear los ejemplos encontrados de la pregunta anterior. Los ejemplos que he encontrado se refieren a WP7 Silverlight, el ahorro de imágenes basado en cámaras, no han sido complejos para mis necesidades o simplemente no han funcionado. Pude descargar un archivo de texto usando una instancia del Webclient y guardarlo en un almacenamiento aislado usando StreamWriter. Necesito realizar la misma tarea con imágenes jpg. A continuación se muestra lo que he usado para descargar el archivo de texto.¿Cómo descargo imágenes (jpg) a través de un webclient y las guardo en un almacenamiento aislado en Windows Phone 7?

============================================== =================================

IsolatedStorageFile MyStore = IsolatedStorageFile.GetUserStoreForApplication(); 


    private void GetTextFile() 
     { 
      WebClient client = new WebClient(); 
      client.DownloadStringCompleted += new  DownloadStringCompletedEventHandler(client_DownloadStringCompleted); 
      client.DownloadStringAsync(new Uri("http://mywebsite.com/textfile.txt")); 
     } 

    private void client_DownloadStringCompleted(object sender,  DownloadStringCompletedEventArgs e) 
     { 
      StreamWriter MyStreamWriter = new StreamWriter(new  IsolatedStorageFileStream("textfile.txt", FileMode.Create, MyStore)); 
      MyStreamWriter.WriteLine(e.result) 
      MyStreamWriter.Close(); 
    } 

========== =============================================== ===================

He eliminado algunas líneas utilizadas para manejar errores, etc. para mantenerlo lo más simple posible.

¿Alguien podría modificar lo anterior para permitirme descargar y guardar un jpg?

Por favor, mantenlo lo más simple posible ya que me confundo fácilmente.

¡Gracias por su tiempo de anticipación!

RESUELTOS! ============================================ ================================

Me las arreglé para hacerlo funcionar usando información de este sitio abajo. http://dotnet.dzone.com/articles/operating-image-files-windows

¡Espero que esto ayude a otros novatos frustrados en el futuro!

IsolatedStorageFile MyStore = IsolatedStorageFile.GetUserStoreForApplication(); 

private void GetImageFile() 
{ 
     WebClient client = new WebClient(); 
     client.OpenReadCompleted += new  OpenReadCompletedEventHandler(client_OpenReadCompleted); 
     client.OpenReadAsync(new Uri("http://mywebsite.com/1.jpg"), client); 
    } 


void client_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e) 
{ 
    var resInfo = new StreamResourceInfo(e.Result, null); 
var reader = new StreamReader(resInfo.Stream); 
byte[] contents; 
    using (BinaryReader bReader = new BinaryReader(reader.BaseStream)) 
    { 
    contents = bReader.ReadBytes((int)reader.BaseStream.Length); 
    } 
    IsolatedStorageFileStream stream = MyStore.CreateFile("10.jpg"); 
stream.Write(contents, 0, contents.Length); 
stream.Close(); 
} 

Respuesta

4

Prueba con esto, quizá atento a Ti,

private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e) 
{ 
    HttpWebRequest reqest1 = (HttpWebRequest)WebRequest.Create(url); 
    reqest1.BeginGetResponse(DownloadImageCallback, reqest1); 
    Thread.Sleep(1000); 
} 

void DownloadImageCallback(IAsyncResult result) 
{ 

    HttpWebRequest req1 = (HttpWebRequest)result.AsyncState; 
    HttpWebResponse responce = (HttpWebResponse)req1.EndGetResponse(result); 
    Stream s = responce.GetResponseStream(); 
    Deployment.Current.Dispatcher.BeginInvoke(() => 
    { 
     string directory = "Images"; 
     if (!myStore.DirectoryExists(directory)) 
     { 
      myStore.CreateDirectory(directory); 
      using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication()) 
      { 
       using (var isoFileStream = myIsolatedStorage.CreateFile(directory + "//yourfilename.jpg")) 
       { 
        var wb = new WriteableBitmap(bitimage); 
        var width = wb.PixelWidth; 
        var height = wb.PixelHeight; 
        Extensions.SaveJpeg(wb, isoFileStream, width, height, 0, 100); 
       } 
      } 
     } 
     else 
     { 
      using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication()) 
      { 
       if (myIsolatedStorage.FileExists(directory + "//yourfilename.jpg")) 
       { 
        myIsolatedStorage.DeleteFile(directory + "//yourfilename.jpg"); 
       } 

       using (var isoFileStream = myIsolatedStorage.CreateFile(directory + "//yourfilename.jpg")) 
       { 
        var wb = new WriteableBitmap(bitimage); 
        var width = wb.PixelWidth; 
        var height = wb.PixelHeight; 
        Extensions.SaveJpeg(wb, isoFileStream, width, height, 0, 100); 
       } 
      } 
     } 
    }); 
}