загрузка изображения из таблицы сотрудников базы данных Northwind - PullRequest
1 голос
/ 29 февраля 2012

Со вчерашнего дня я пытаюсь загрузить изображение из байтового массива. Я получаю байтовый массив из таблицы Employees База данных NorthWind . Я прочитал некоторые статьи , в которых говорится, что существует заголовок OLE размера 78, который необходимо удалить, прежде чем мы преобразуем из byte [] в ImageSource. Но он не может получить никакого изображения. вот мой конвертер:

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 голосов
/ 29 февраля 2012

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

...