Convierta System.Windows.Media.ImageSource a System.Drawing.Bitmap

¿Cómo puedo convertir System.Windows.Media.ImageSource a System.Drawing.Bitmap en C #?

es un OP más antiguo, pero aún así puede ser útil para otras personas, ya que llevó algo de tiempo encontrar una solución más limpia sin interoperabilidad de dll o hacks de portapapeles.

esto funcionó para mí, puede usar pngencoder para cortar el tamaño de la imagen antes de guardarla en un archivo o en una transmisión rtf

private System.Drawing.Image ImageWpfToGDI(System.Windows.Media.ImageSource image) { MemoryStream ms = new MemoryStream(); var encoder = new System.Windows.Media.Imaging.BmpBitmapEncoder(); encoder.Frames.Add(System.Windows.Media.Imaging.BitmapFrame.Create(image as System.Windows.Media.Imaging.BitmapSource)); encoder.Save(ms); ms.Flush(); return System.Drawing.Image.FromStream(ms); } 

Consulte CÓMO UTILIZAR IMAGESOURCE (NO HANDLER) EN WINFORMS COMO SYSTEM.DRAWING.BITMAP (HBITMAP) :

Cómo convertir fácilmente WinForms System.Drawing.Bitmap en WPF ImageSource que aprendió de este artículo. Hoy, explicaré cómo hacerlo en sentido contrario. En realidad, todo lo que tiene que hacer es extraer el manejador de BitmapSource, sin embargo, tal enfoque no es compatible, por lo tanto, lo único que podemos hacer es copiar píxeles de BitmapSource (o BitmapFrame) en una matriz de bytes y luego copiarlos en el puntero de HBitmap.