Convert RenderTargetBitmap to BitmapImage

23,220

Although it doesn't seem to be necessary to convert a RenderTargetBitmap into a BitmapImage, you could easily encode the RenderTargetBitmap into a MemoryStream and decode the BitmapImage from that stream.

There are several BitmapEncoders in WPF, the sample code below uses a PngBitmapEncoder.

var renderTargetBitmap = getRenderTargetBitmap();
var bitmapImage = new BitmapImage();
var bitmapEncoder = new PngBitmapEncoder();
bitmapEncoder.Frames.Add(BitmapFrame.Create(renderTargetBitmap));

using (var stream = new MemoryStream())
{
    bitmapEncoder.Save(stream);
    stream.Seek(0, SeekOrigin.Begin);

    bitmapImage.BeginInit();
    bitmapImage.CacheOption = BitmapCacheOption.OnLoad;
    bitmapImage.StreamSource = stream;
    bitmapImage.EndInit();
}
Share:
23,220
sharmila
Author by

sharmila

Updated on July 05, 2022

Comments

  • sharmila
    sharmila almost 2 years

    I have a RenderTargetBitmap, I need to convert it to BitmapImage. Please check the code below.

     RenderTargetBitmap bitMap = getRenderTargetBitmap();
     Image image = new Image();// This is a Image
     image.Source = bitMap;
    

    In the above code I have used Image.Now I need to use a BitmapImage. How can I do this?

     RenderTargetBitmap bitMap = getRenderTargetBitmap();
     BitmapImage image = new BitmapImage();// This is a BitmapImage
     // how to set bitMap as source of BitmapImage ?