C# BitmapImage到位图引发异常

C# BitmapImage到位图引发异常,c#,wpf,bitmapencoder,C#,Wpf,Bitmapencoder,我将在StackOverflow上找到的函数用于项目: 此函数的目标是将System.Windows.Media.Imaging.BitmapImage转换为System.Drawing.Bitmap public Bitmap BitmapImage2Bitmap(BitmapImage bitmapImage) { using (MemoryStream outStream = new MemoryStream()) {

我将在StackOverflow上找到的函数用于项目: 此函数的目标是将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.SaveoutStream

有没有办法让它消失?
谢谢你的帮助

您应该检查以确保您传递的位图图像有效。根据BitmapEncoder.Save的文档,您得到的错误是帧计数小于或等于零的结果


请确保已正确添加帧,并且正在以正确的值传入bitmapImage。

顺便说一句,我问题开头的Hello似乎已消失,我无法编辑它……您的代码应该可以工作。确保位图图像有效。然而,返回新的Bitmapbitmap似乎有些奇怪;而不是仅仅返回位图;仔细观察后,您的意思是,它会将错误消息写入调试输出,但实际上不会引发异常?您是对的,它不会真正引发异常,即使它不在try/catch块中,也不会在using块中。我只是想知道这样让它进入程序是否危险,因为它工作不确定为什么,但即使使用正确加载的BitmapImage,BitmapFrame.CreatebitmapImage也会输出此消息。它只是将消息写入调试,无需担心。只是框架内部引发和处理的异常。请确保正确添加框架:enc.Frames.AddBitmapFrame.CreatebitmapImage;确保正确添加它。与中一样,在调试器中运行它并进行检查以确保。很明显,这就是事情失败的地方。因为没有正确添加。enc.Frames.AddBitmapFrame.Create的哪部分。。。应该由OP检查吗?这句话毫无意义。很明显,这是事情失败的地方——根本不是。如果您使用有效的BitmapImage尝试问题中的代码,它就可以正常工作。与什么相反?你的代码应该能用。?这有什么帮助吗?我只是想指出他们可能会去哪里,因为他们似乎陷入了一个例外,没有证据证明他们做过任何研究。我只是想在这里帮忙,但我忘了这个地方不再适合那个了。我不是根据猜测来写答案的。当你有足够的声誉时,你可以写这篇评论。现在,它不回答任何问题。