我们有一些视频软件可以将其转换BitmapSource
为BitmapImage
稍后使用以下代码将其绘制到屏幕上。问题是在速度较慢的机器上,这个过程似乎有点慢,运行 MS 分析器发现这些位图操作(即ToBitmapImage
函数)是我们进行的前 4 个最昂贵的调用。我能做些什么来提高效率吗?
// Conversion
this.VideoImage = bitmapsource.ToBitmapImage();
// Drawing
drawingContext.DrawImage(this.VideoImage, new Rect(0, 0, imageWidth, imageHeight));
// Conversion code
internal static BitmapImage ToBitmapImage(this BitmapSource bitmapSource)
{
JpegBitmapEncoder encoder = new JpegBitmapEncoder()
MemoryStream memorystream = new MemoryStream();
BitmapImage tmpImage = new BitmapImage();
encoder.Frames.Add(BitmapFrame.Create(bitmapSource));
encoder.Save(memorystream);
tmpImage.BeginInit();
tmpImage.StreamSource = new MemoryStream(memorystream.ToArray());
tmpImage.EndInit();
memorystream.Close();
return tmpImage;
}