2011-04-16 134 views
0

我正在为windows phone 7做一个应用程序。 应用程序正在从数据库(Sql server 2008)中访问一个图像。 数据存储在数据类型'image'中。我想显示图像。 我使用以下代码byte []在windows phone 7应用程序中进行图像转换

 public object Convert(object value, Type targetType, object parameter,   System.Globalization.CultureInfo culture) 
    { 
     byte[] data; 
     BitmapImage empImage = new BitmapImage(); 
     Stream mm; 
     data = (byte[])value; 
     mm = new MemoryStream(data); 
     mm.Position = 0; 
     BinaryReader BR = new BinaryReader(mm); 
     byte[] image=BR.ReadBytes(data.Length); 
     mm = new MemoryStream(image); 
     //empImage.SetSource(mm); 
     return empImage; 
    } 

但是有在注释行一个“未指定”的错误(empImage.SetSource(毫米))。

请帮我......

回答

0

BitmapImage.SetSource接受Stream(你可以离开了CreateOptions如果不需要立即访问字节之后):

public object Convert(object value, Type targetType, object parameter, 
     System.Globalization.CultureInfo culture) 
{ 
    byte[] data = (byte[])value; 

    using (MemoryStream stream = new MemoryStream(data)) 
    { 
     BitmapImage image = new BitmapImage 
     { 
      CreateOptions = BitmapCreateOptions.None 
     }; 

     image.SetSource(stream); 

     return image; 
    } 
} 

而且,我不认为IValueConverter是适合这种代码的地方。

最后,image数据库类型已赞成varbinary(MAX)

+0

弃用我不知道为什么这是否决。 – 2013-07-20 12:46:49

+0

没关系,它被拒绝了,因为一个'BitmapSource'不能被实例化。 – 2013-07-20 12:48:26

+0

@MathiasLykkegaardLorenzen - 好点,更新。 – 2013-07-20 12:53:39