Windows phone 8.1 将StorageFile保存为图片

Windows phone 8.1 save StorageFile as image

我想将 StorageFile 保存为可以在图库中看到并稍后使用的图像。 StorageFile 包含由相机拍摄或从画廊拍摄并在 StorageFile 中转换的图像。

将已知图像扩展名(如 .jpg 或 .png)的存储文件保存在 public 文件夹中,它将显示在图库中。

private async void SaveCroppedImage(object sender, RoutedEventArgs e)
       {
           StorageFile file = await KnownFolders.CameraRoll.CreateFileAsync("edited.jpg", CreationCollisionOption.ReplaceExisting);
           using (IRandomAccessStream stream =await file.OpenAsync(FileAccessMode.ReadWrite))
           {
               await EncodeWriteableBitmap(WB_CroppedImage, stream, BitmapEncoder.JpegEncoderId);
           }

       }
       private static async Task EncodeWriteableBitmap(WriteableBitmap bmp, IRandomAccessStream writeStream, Guid encoderId)
       {
           // Copy buffer to pixels
           byte[] pixels;
           using (var stream = bmp.PixelBuffer.AsStream())
           {
               pixels = new byte[(uint)stream.Length];
               await stream.ReadAsync(pixels, 0, pixels.Length);
           }
           // Encode pixels into stream
           var encoder = await BitmapEncoder.CreateAsync(encoderId, writeStream);
           encoder.SetPixelData(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Premultiplied,
              (uint)bmp.PixelWidth, (uint)bmp.PixelHeight,
              96, 96, pixels);
           await encoder.FlushAsync();
       }