WPF - конвертировать файл в Byte [] в BitmapSource, используя JpegBitmapDecoder - PullRequest
2 голосов
/ 25 августа 2011

Мне нужно прочитать файл jpg, и он отобразится в контроллере изображений. Следующее работает отлично:

imgTwo.Source = FetchImage(@"C:\Image075.jpg");

public BitmapSource FetchImage(string URLlink)
{
      JpegBitmapDecoder decoder = null;
      BitmapSource bitmapSource = null;
      decoder = new JpegBitmapDecoder(new Uri(URLlink, UriKind.Absolute), BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.OnLoad);
      bitmapSource = decoder.Frames[0];
      bitmapSource.Freeze();
      return bitmapSource;
}

Моя проблема заключается в том, что мне нужно хранить это изображение в базе данных как Byte [] (varbinary (MAX) и читать его оттуда, а не напрямую из файла, как указано выше. Поэтому мне нужно либо иметь Byte [] в качестве входных данных для этой функции вместо строки URL-ссылки, либо сохранить BitmapSource как Byte []. Как мне это сделать?

1 Ответ

4 голосов
/ 25 августа 2011

JpegBitmapDecoder имеет второй конструктор , который принимает Stream. Просто введите MemoryStream, содержащий ваш byte[]:

using(var stream = new MemoryStream(yourByteArray))
{
    decoder = new JpegBitmapDecoder(stream,
                                    BitmapCreateOptions.PreservePixelFormat,
                                    BitmapCacheOption.OnLoad);
}
...