Загрузить байт [] в изображение во время выполнения - PullRequest
12 голосов
/ 24 февраля 2009

У меня есть byte[], который представлен Image. Я загружаю это Image через WebClient. Когда WebClient загрузил изображение и я ссылаюсь на него, используя его URL, я получаю byte[]. У меня вопрос, как мне загрузить byte[] в Image элемент в WPF? Спасибо.

Примечание : Это дополняет вопрос, который я задал здесь: Создать изображение во время выполнения . Кажется, я не могу получить такой подход к работе, поэтому я пробую другой подход.

Ответы [ 4 ]

21 голосов
/ 24 февраля 2009

Создайте BitmapImage из MemoryStream, как показано ниже:

MemoryStream byteStream = new MemoryStream(bytes);
BitmapImage image = new BitmapImage();
image.BeginInit();
image.StreamSource = byteStream;
image.EndInit();

И в XAML вы можете создать Image элемент управления и установить выше image как свойство Source.

5 голосов
/ 24 февраля 2009

Вы можете использовать BitmapImage и установить его StreamSource для потока, содержащего двоичные данные. Если вы хотите сделать stream из byte[], используйте MemoryStream:

MemoryStream stream = new MemoryStream(bytes);
1 голос
/ 02 марта 2016

Один способ, которым я понял, как сделать это так, чтобы он был и быстрым, и потокобезопасным, был следующим:

 var imgBytes = value as byte[];
 if (imgBytes == null)
  return null;
 using (var stream = new MemoryStream(imgBytes))
   return BitmapFrame.Create(stream,BitmapCreateOptions.None, BitmapCacheOption.OnLoad);

Я бросил это в конвертер для моего приложения WPF после запуска изображений как Varbinary из БД.

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

В .Net framework 4.0

using System.Drawing;
using System.Web;

private Image GetImageFile(HttpPostedFileBase postedFile)
{
   if (postedFile == null) return null;
   return Image.FromStream(postedFile.InputStream);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...