代码之家  ›  专栏  ›  技术社区  ›  fre0n

从MemoryStream创建BitmapImage会导致崩溃-用于工作

  •  1
  • fre0n  · 技术社区  · 14 年前

    我真的很困惑。我正在创建一个带有原始字节数组的位图图像,如下所示:

    void SetBitmapData(byte[] imageData)
    {
        var bitmapImage = new BitmapImage();
        bitmapImage.BeginInit();
        bitmapImage.StreamSource = new MemoryStream(imageData);
        bitmapImage.EndInit();
    
        this.Bitmap = bitmapImage;
    }
    

    直到一个小时前,它还起作用——而且已经工作了几个月。现在,在 bitmapImage.EndInit() ,它给了我一个NotSupportedException-“没有找到适合完成此操作的成像组件。”

    我真的很困惑,因为从今天早上开始,这就奏效了。什么都没有改变。事实上,为了确保我的更改(在应用程序完全不相关的部分中)不会导致崩溃,我使用head从SVN中新签出了代码。昨天我承诺的时候,头没有掉下来。这个新拷贝也表现出同样的行为。

    当运行可执行文件本身时,它会从vs崩溃。

    我使用以下插件运行Visual Studio 2010:Resharper、Resharper的样式警察、VisualSVN。

    在这一切发生之前,Visual Studio做了一些奇怪的事情——键盘光标消失了,但我仍然可以打字。我可以用鼠标和键盘选择多个字符,如果我点击“删除”,它们就会被删除。我重新启动了Visual Studio,看不见的光标问题消失了。

    我试过重新启动电脑,但没用。

    1 回复  |  直到 14 年前
        1
  •  2
  •   Conrad Frix    14 年前

    “找不到适合完成此操作的映像组件。”在调用 IWICBitmapEncoder_Initialize_Proxy 失败。因为你的VS2010(它也使用这些东西)也很有趣,我猜你的一些DLL是托管的。最好的办法可能是询问如何在超级用户上恢复windowscodecs.dll和wincodec.lib。