我在项目中使用了我在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);
有没有办法使它消失?
谢谢您的帮助!
答案 0 :(得分:-1)
您应检查并确保传入的BitmapImage有效。根据BitmapEncoder.Save的文档,出现的错误是“帧”计数小于或等于零的结果。
确保正确添加了框架,并以正确的值传递了bitmapImage。