从字节数组创建BitmapImage

时间:2013-05-18 15:10:39

标签: c# wpf nullpointerexception memorystream bitmapimage

我正在尝试从服务返回的字节数组中创建BitmapImage

我的代码是:

using (sc = new ServiceClient())
{
    using (MemoryStream ms = new MemoryStream(sc.GetImage()))
    {
        Display = new BitmapImage();
        Display.BeginInit();
        Display.StreamSource = ms;
        Display.EndInit();
    }
}

但是,EndInit方法会引发异常。它说Object reference not set to an instance of an object.

看来,Uri为空,导致问题。不幸的是,我自己找不到解决方案。

2 个答案:

答案 0 :(得分:4)

事实证明,WPF绑定导致错误。

private BitmapImage _display;
public BitmapImage Display
{
    get { return _display; }
    set
    {
        _display = value;
        RaisePropertyChanged("Display");
    }
}

我通过获取不在属性Display本身中的图像来解决问题,而是在提交的_display中。所以,以下工作正常。

using (sc = new ServiceClient())
{
    using (MemoryStream ms = new MemoryStream(sc.GetImage()))
    {
        _display = new BitmapImage();
        _display.BeginInit();
        _display.CacheOption = BitmapCacheOption.OnLoad;
        _display.StreamSource = ms;
        _display.EndInit();
    }
}

Display = _display;

答案 1 :(得分:1)

您将memory stream直接分配给bitmap source,这会导致error。 首先,您需要获得array bytes&{将convert放入memory stream,然后分配给bitmap source,就是这样!

using (sc = new ServiceClient())
    {
            Byte[] array = sc.GetImage();

            Display = new BitmapImage();
            Display.BeginInit();
            Display.StreamSource = new MemoryStream(array);
            Display.EndInit();
     }