Is there any way for converting WriteableBitmap to Bitmap in C# ?
Converting WriteableBitmap to Bitmap in C#
Asked Answered
@GeorgeJohnston BitmapImage is in the System.Windows.Media namespace. Bitmap is in the System.Drawing namespace. The methods to convert between the two are entirely different. –
Convulse
It's pretty straightforward, actually. Here's some code that should work. I haven't tested it and I'm writing it from the top of my head.
private System.Drawing.Bitmap BitmapFromWriteableBitmap(WriteableBitmap writeBmp)
{
System.Drawing.Bitmap bmp;
using (MemoryStream outStream = new MemoryStream())
{
BitmapEncoder enc = new BmpBitmapEncoder();
enc.Frames.Add(BitmapFrame.Create((BitmapSource)writeBmp));
enc.Save(outStream);
bmp = new System.Drawing.Bitmap(outStream);
}
return bmp;
}
The WriteableBitmap inherits from a BitmapSource, which can be saved directly to a stream. Then, you build a Bitmap from this stream.
As an aside, you'll need PresentationCore and WindowsBase for .Net 3.5. For .Net 4, you'll also need System.Xaml. Don't know why that is. I'm using these references in an Asp.NET application to generate QR codes for TOTP authentication. –
Babi
For some operations,
Bitmap
requires the underlying stream to be open when the bitmap was created from a stream. For example, bmp.Save(filename)
will not work. –
Maxson © 2022 - 2024 — McMap. All rights reserved.