WriteableBitmap到BitmapFrame转换

时间:2011-11-29 09:21:13

标签: c#

是否有一些无痛的转换? 我用Google搜索了这个样本:

using (MemoryStream ms = new MemoryStream())
{//WriteableBitmap wb defined before
    wb.SaveJpeg(ms, (int)image1.Width, (int)image1.Height, 0, 100);
    BitmapImage bmp = new BitmapImage();
    bmp.SetSource(ms);
} 

但是wb没有SaveJpeg方法! (使用System.Windows.Media.Imaging;使用System.Windows.Media;) 和bmp没有SetSource =(

2 个答案:

答案 0 :(得分:1)

有一个功能。

var bf = BitmapFrame.Create(wb);

答案 1 :(得分:0)

您可以将WriteableBitmap直接放入BitmapFrame.Create()。然后,您可以使用BitmapFrame

JpegBitmapEncoder保存为JPEG格式
MemoryStream ms = new MemoryStream();
JpegBitmapEncoder enc = new JpegBitmapEncoder();
enc.Frames.Add(BitmapFrame.Create(wb));
enc.Save(ms);

如果要在保存之前调整图像大小,我建议使用Visual Studio中NuGet包管理器中提供的WriteableBitmapEx。以下是它的使用方法:

WriteableBitmap newWB = wb.Resize(256, 256, WriteableBitmapExtensions.Interpolation.Bilinear);