È possibile utilizzare uno dei BitmapEncoders
per salvare il fotogramma WriteableBitmap
ad un nuovo BitmapImage
In questo esempio useremo il PngBitmapEncoder
ma solo scegliere quello che si adatta alla situazione.
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;
}
utilizzo:
BitmapImage bitmap = ConvertWriteableBitmapToBitmapImage(your writable bitmap);
o si potrebbe rendere questo un metodo di estensione per un facile utilizzo
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;
}
}
utilizzo:
WriteableBitmap wbm = // your writeable bitmap
BitmapImage bitmap = wbm.ToBitmapImage();
fonte
2013-01-04 21:20:57
Sede [questa risposta] (http: //stackoverflow.com/a/13988871/1136211) e sostituisci RenderTargetBitmap di Wri teableBitmap. Perché hai esattamente bisogno di questa conversione? Di solito non è necessario, poiché BitmapImage e WriteableBitmap hanno una classe base comune BitmapSource che fornisce tutte le proprietà rilevanti di un'immagine. – Clemens