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
Post Relacionado:
[twitter-follow screen_name=’eduardorizo’ show_count=’yes’]
Pingback: Free: Curso Windows Phone – Vários tópicos | Blog do Eduardo H. Rizo