How do I convert a WriteableBitmap object to a BitmapImage Object in WPF
15,194
You can use one of the BitmapEncoders
to save the WriteableBitmap
frame to a new BitmapImage
In this example we will use the PngBitmapEncoder
but just choose the one that fits 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;
}
usage:
BitmapImage bitmap = ConvertWriteableBitmapToBitmapImage(your writable bitmap);
or you could make this an extension method for easy 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;
}
}
usage:
WriteableBitmap wbm = // your writeable bitmap
BitmapImage bitmap = wbm.ToBitmapImage();
Author by
JMK
Software developer currently living in Belfast, jack of a couple of trades, master of none!
Updated on June 22, 2022Comments
-
JMK almost 2 years
How do I convert a
WriteableBitmap
object to aBitmapImage
Object in WPF?This link covers silverlight, the process is not the same in WPF as the
WriteableBitmap
object does not have aSaveJpeg
method.So my question is How do I convert a
WriteableBitmap
object to aBitmapImage
Object in WPF? -
Clemens over 11 yearsAnd don't forget to rewind the stream. After saving, before setting
bmImage.StreamSource
do astream.Seek(0, SeekOrigin.Begin);
. Some decoders (e.g. JPG) require this. See also here. -
JMK over 11 yearsThankyou both, most helpful!
-
Clemens over 11 years@JMK Still i doubt that it's really necessary to do this conversion.