BitmapImage到Bitmap抛出异常

时间:2018-10-24 13:28:57

标签: c# wpf bitmapencoder

我在项目中使用了我在StackOverflow上找到的功能:https://stackoverflow.com/a/6484754/9535211
此功能的目标是将System.Windows.Media.Imaging.BitmapImage转换为System.Drawing.Bitmap。

public Bitmap BitmapImage2Bitmap(BitmapImage bitmapImage)
{

            using (MemoryStream outStream = new MemoryStream())
            {
                BitmapEncoder enc = new BmpBitmapEncoder();
                enc.Frames.Add(BitmapFrame.Create(bitmapImage));
                enc.Save(outStream);
                System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(outStream);
                return (new Bitmap(bitmap));
            }
}

它工作得很好(即使它真的很重),但是每次调用它时都会抛出异常: 引发的异常:PresentationCore.dll中的'System.NotSupportedException'
似乎是从行中来的:

  

enc.Save(outStream);

有没有办法使它消失?
谢谢您的帮助!

1 个答案:

答案 0 :(得分:-1)

您应检查并确保传入的BitmapImage有效。根据BitmapEncoder.Save的文档,出现的错误是“帧”计数小于或等于零的结果。

确保正确添加了框架,并以正确的值传递了bitmapImage。