Curso Windows Phone – Como salvar um arquivo de imagem no sistema de arquivos da APP

Olá pessoal, tudo bom?

A transição entre o Windows Phone 7, 7.5, 8, 8.1 e agora o Windows Phone 10 (também se encaixam aqui as Universal APPs) trouxe mudanças no modo como codificamos alguns recursos para as APPs, sendo um deles, o método para armazenamento de arquivos no StorageFolder (IsolatedStorageFile) da própria aplicação.

Dada essa situação e também para responder a dúvida de um leitor, resolvi escrever esse post que tem por objetivo demonstrar como armazenar um arquivo de imagem no StorageFolder da APP.

PS: O procedimento para armazenar outros tipos de arquivos seria similar a esse

A codificação abaixo parte do pressuposto que você já possui um arquivo de imagem instanciado em um objeto da classe WriteableBitmap e que o mesmo é passado por parâmetro para nosso método que irá persisti-lo no sistema de arquivos da APP. Vejamos:


async private void SaveImage(WriteableBitmap wb)
{
 try
 {
 //Mapeando o sistema de arquivos local da APP
 StorageFolder folder = ApplicationData.Current.LocalFolder;
 //Definindo o diretório dentro sistema de arquivos local que receberá as imagens
 StorageFolder imgFolder = await folder.CreateFolderAsync("Images", CreationCollisionOption.OpenIfExists);
 //Definindo o objeto do arquivo a ser persistido
 StorageFile file = await imgFolder.CreateFileAsync("file_name", CreationCollisionOption.ReplaceExisting);

 //Definindo o tipo do arquivo de imagem
 Guid BitmapEnconderGuid = BitmapEncoder.JpegEncoderId;
 //Gravando o arquivo
 using (IRandomAccessStream stream = await file.OpenAsync(FileAccessMode.ReadWrite))
 {
 BitmapEncoder encoder = await BitmapEncoder.CreateAsync(BitmapEnconderGuid, stream);

 Stream pixelStream = wb.PixelBuffer.AsStream();
 byte[] pixels = new byte[pixelStream.Length];
 await pixelStream.ReadAsync(pixels, 0, pixels.Length);

 encoder.SetPixelData(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Ignore,
 (uint)wb.PixelWidth,
 (uint)wb.PixelHeight,
 96.0,
 96.0,
 pixels);
 await encoder.FlushAsync();
 }

 var dialog = new MessageDialog("Image stored successfully.", "Information");
 await dialog.ShowAsync();
 }
 catch (Exception)
 {
 throw new FileNotFoundException();
 }
}

Abraços,

Eduardo Henrique Rizo

MCP

Post Relacionado: 

[twitter-follow screen_name=’eduardorizo’ show_count=’yes’]

1 comentário em “Curso Windows Phone – Como salvar um arquivo de imagem no sistema de arquivos da APP”

  1. Pingback: Free: Curso Windows Phone – Vários tópicos | Blog do Eduardo H. Rizo

Deixe um comentário