You can use one of BitmapEncoders to save the WriteableBitmap frame to the new BitmapImage
In this example, we will use PngBitmapEncoder , but just select the one that suits your situation.
public BitmapImage ConvertWriteableBitmapToBitmapImage(WriteableBitmap wbm) { BitmapImage bmImage = new BitmapImage(); using (MemoryStream stream = new MemoryStream()) { PngBitmapEncoder encoder = new PngBitmapEncoder(); encoder.Frames.Add(BitmapFrame.Create(wbm)); encoder.Save(stream); bmImage.BeginInit(); bmImage.CacheOption = BitmapCacheOption.OnLoad; bmImage.StreamSource = stream; bmImage.EndInit(); bmImage.Freeze(); } return bmImage; }
using:
BitmapImage bitmap = ConvertWriteableBitmapToBitmapImage(your writable bitmap);
or you can do it by extension method for ease of use
public static class ImageHelpers { public static BitmapImage ToBitmapImage(this WriteableBitmap wbm) { BitmapImage bmImage = new BitmapImage(); using (MemoryStream stream = new MemoryStream()) { PngBitmapEncoder encoder = new PngBitmapEncoder(); encoder.Frames.Add(BitmapFrame.Create(wbm)); encoder.Save(stream); bmImage.BeginInit(); bmImage.CacheOption = BitmapCacheOption.OnLoad; bmImage.StreamSource = stream; bmImage.EndInit(); bmImage.Freeze(); } return bmImage; } }
using:
WriteableBitmap wbm =
sa_ddam213
source share