Clique e receba as novidades quentinhas no Telegram

Olá, tudo bom?

Caso você esteja precisando fazer o download de imagens da Internet e armazena-las localmente no sistema de arquivos de sua APP, veja abaixo uma sequencia de código que poderá lhe ajudar.

1) Código XAML para montar a interface do nosso exemplo

download-imagem-gravar-local

...


  
  




  
  
  
2) Código C# utilizado para manipular o clique do botão, download e armazenamento local da imagem
private void btnObter_Click(object sender, RoutedEventArgs e)
{
  //No clique do botão criamos um objeto da classe WebClient e então fazemos a leitura assincrona da imagem através de sua URL
  WebClient wc = new WebClient();
  wc.OpenReadCompleted += wc_OpenReadCompleted; //Esse método será chamado após o término do download da imagem
  wc.OpenReadAsync(new Uri(txtURL.Text, UriKind.Absolute));
}

void wc_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
  //O resultado do download chega através do argumento "e" recepcionado por esse método
  byte[] imageBytes = new byte[e.Result.Length];
  e.Result.Read(imageBytes, 0, imageBytes.Length);

  //O objeto "image" recebe passa a representar para o C# a imagem que fizemos download
  var image = new BitmapImage();
  image.SetSource(e.Result);

  //Configurando a imagem para aparecer no APP
  imgInternet.Source = image;
  imgInternet.Visibility = Visibility.Visible;

  //Gravando a imagem no IsolatedStorageFile de nossa aplicação
  string nomeArquivo = "livetile.jpg"; //O nome do arquivo está fixo, mas caso precise, basta achar um modo de nomear cada um deles
  using (IsolatedStorageFile iso = IsolatedStorageFile.GetUserStoreForApplication())
  {
    if (iso.FileExists(nomeArquivo))
      iso.DeleteFile(nomeArquivo);

    IsolatedStorageFileStream fs = iso.CreateFile(nomeArquivo);
    WriteableBitmap wb = new WriteableBitmap(image);
    Extensions.SaveJpeg(wb, fs, wb.PixelWidth, wb.PixelHeight, 0, 90);
    fs.Close();
  }
}

Para comprovar que a imagem foi armazena no sistema de arquivos de sua APP, sugiro que utilize as dicas contidas no post Curso Windows Phone: Visualizar, copiar e transferir arquivos do Isolated Storage do emulador do Windows Phone para o computador do desenvolvedor e vice-versa.

Fica a dica!

Grande abraço,

Eduardo Henrique Rizo (@eduardorizo)

MCP

Post Relacionado: 

Fonte: Blog do Eduardo H. Rizo