我正在尝试从服务返回的字节数组中创建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为空,导致问题。不幸的是,我自己找不到解决方案。
答案 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();
}