Я пытаюсь заставить SoftwareBitmap
быть пригодным для использования в WPF как Bitmap
.
Подходы, подобные , показывают, что выглядит многообещающе, но они, похоже, используют объекты из разных пространств имен, которые не совсем работают в моем случае. Для контекста я использую MediaCapture
из земли UWP для потоковой передачи с веб-камеры в моем приложении WPF.
public static WriteableBitmap WriteableBitmapFromSoftwareBitmap(SoftwareBitmap soft)
{
WriteableBitmap writeable = new
WriteableBitmap(soft.PixelWidth, soft.PixelHeight);
soft.CopyToBuffer(writeable.PixelBuffer);
return writeable;
}
public static Bitmap BitmapFromWriteableBitmap(WriteableBitmap writeBmp)
{
Bitmap bmp;
using (MemoryStream outStream = new MemoryStream())
{
System.Windows.Media.Imaging.BitmapEncoder enc = new
BmpBitmapEncoder();
enc.Frames.Add(BitmapFrame.Create(writeBmp)); // Error here
enc.Save(outStream);
bmp = new Bitmap(outStream);
}
return bmp;
}
К сожалению, в BitmapFromWriteableBitmap
вызов BitmapFrame.Create
жалуется на то, что он не может создать URI из такого вида WriteableBitmap
.
Обратите внимание, что WriteableBitmap
является Windows.UI.Xaml.Media.Imaging.WriteableBitmap
,
SoftwareBitmap
является Windows.Graphics.Imaging.SoftwareBitmap
,
и желаемый Bitmap
является System.Drawing.Bitmap
.