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
... <!--TitlePanel contains the name of the application and page title--> <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28"> <TextBlock Text="BLOG DO EDUARDO H. RIZO" Style="{StaticResource PhoneTextNormalStyle}" Margin="12,0"/> <TextBlock Text="download image" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/> </StackPanel> <!--ContentPanel - place additional content here--> <StackPanel x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> <TextBlock Name="txbURL" Text="URL da imagem:" /> <TextBox Name="txtURL" Text="http://ehrizo.files.wordpress.com/2013/06/logo-fipp.jpg" /> <Button Name="btnObter" Content="Obter imagem e gravar localmente" Click="btnObter_Click" /> <Image Name="imgInternet" Visibility="Collapsed" /> </StackPanel> ...
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
Post Relacionado:
[twitter-follow screen_name=’eduardorizo’ show_count=’yes’]
Pingback: Free: Curso Windows Phone – Vários tópicos | Blog do Eduardo H. Rizo
Olá, estou precisando muito desse código para o novo modelo da microsoft, os apps universais do windows 10, será que teria como vocês me ajudarem?, sou novo na programação mobile, comecei com a ajuda do App Studio da Microsoft e agora quero avançar mais a fundo, será que teria como vocês criarem o código e me passarem?, ou pelo menos me ajudar de alguma forma? obrigado!