如何将WriteableBitmap
对象转换为BitmapImage
WPF 中的对象?
这个链接涵盖了silverlight,WPF中的过程不一样,因为WriteableBitmap
对象没有SaveJpeg
方法。
所以我的问题是如何在 WPF 中将对象转换为WriteableBitmap
对象?BitmapImage
如何将WriteableBitmap
对象转换为BitmapImage
WPF 中的对象?
这个链接涵盖了silverlight,WPF中的过程不一样,因为WriteableBitmap
对象没有SaveJpeg
方法。
所以我的问题是如何在 WPF 中将对象转换为WriteableBitmap
对象?BitmapImage
您可以使用其中一个BitmapEncoders
将框架保存WriteableBitmap
到新的BitmapImage
在此示例中,我们将使用 ,PngBitmapEncoder
但只需选择适合您情况的那个。
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;
}
用法:
BitmapImage bitmap = ConvertWriteableBitmapToBitmapImage(your writable bitmap);
或者您可以将此作为扩展方法以便于使用
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;
}
}
用法:
WriteableBitmap wbm = // your writeable bitmap
BitmapImage bitmap = wbm.ToBitmapImage();