从Northwind数据库的Employees表加载图像

时间:2012-02-29 19:33:27

标签: image converter silverlight-5.0 northwind

从昨天开始,我正在尝试从字节数组加载图像。 我从NorthWind database的Employees表中获取了字节数组。 我读了一些articles,说我们在从byte []转换为ImageSource之前应该删除一个大小为78的OLE头。但它无法获得任何形象。 这是我的转换器:

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

        if (data != null)
        {
            MemoryStream ms = new MemoryStream();
            int offset = 78;               
            BitmapImage img = new BitmapImage();                
            ms.Write(data, offset, data.Length - offset);
            img.SetSource(ms);
            ms.Close();
            return img;
        }
        return null;

    }

这是我在XAML中的图像定义

<Image Grid.Column="1" Height="147" HorizontalAlignment="Left" Margin="3,3,0,6" Name="photoImage" Source="{Binding Path=Photo, UpdateSourceTrigger=PropertyChanged, Converter={StaticResource PhotoConverter1}}" Stretch="Fill" VerticalAlignment="Center" Width="137" DataContext="{Binding}" />

你能帮我弄清楚如何让它发挥作用吗?

1 个答案:

答案 0 :(得分:0)

http://en.wikipedia.org/wiki/BMP_file_format

您应该能够查看数组,并使用位图中的标头信息查看位图的开始位置。

此代码也可以帮助您: http://blogs.msdn.com/b/pranab/archive/2008/07/15/removing-ole-header-from-images-stored-in-ms-access-db-as-ole-object.aspx