Как создать FileStreame из байта []? - PullRequest
0 голосов
/ 15 марта 2012

У меня есть такой класс:

class person
{
    public string Name{get;set;}
    public byte[] PersonImage{get;set;}
}

Когда я загружаю свой Person из базы данных, я хочу показать PersonImage в элементе управления Image, поэтому я хочу создать BitmapImage из моего байта []:

var bitmapImage = new BitmapImage();

bitmapImage.BeginInit();
var filestream = new MemoryStream(PersonImage);
bitmapImage.StreamSource = filestream;

bitmapImage.EndInit();// I have Exception in this line 

Мое исключение:

Не найдено ни одного компонента обработки изображений, подходящего для выполнения этой операции.

- Эдите мое внутреннее исключение:

Внутреннее исключение: исключение из HRESULT: 0 * 88982F50

Ответы [ 2 ]

1 голос
/ 15 марта 2012

при условии, что PersonImage действительно является действительным byte[], представляющим изображение, попробуйте

var bitmapImage = new BitmapImage();

bitmapImage.BeginInit();
var somestream = new MemoryStream(PersonImage);
somestream.Position = 0; // "rewind" stream to start...
bitmapImage.StreamSource = somestream;

bitmapImage.EndInit();
0 голосов
/ 16 марта 2012

Ваше изображение, вероятно, не поддерживается форматом. Попробуйте следующий метод:

public BitmapImage GetBitmapImage(byte[] imageData)
{
    BitmapImage bitmapImage = new BitmapImage();

    using (MemoryStream imageStream = new MemoryStream(imageData))
    using (Image image = Image.FromStream(imageStream))
    using (MemoryStream convertedImageStream = new MemoryStream())
    {
        bitmapImage.BeginInit();

        image.Save(convertedImageStream, ImageFormat.Png);

        bitmapImage.CacheOption = BitmapCacheOption.OnLoad;
        bitmapImage.StreamSouce = convertedImageStream;

        bitMapImage.EndInit();
    }

    return bitmapImage;
}

Убедитесь, что вы добавили следующие операторы использования вверху вашего файла:

using System.Drawing;
using System.Drawing.Imaging;
...