Подтвердить что ты не робот

Загрузите байт [] в изображение во время выполнения

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

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

4b9b3361

Ответ 1

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

MemoryStream stream = new MemoryStream(bytes);

Ответ 2

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

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

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

Ответ 3

В .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);
}

Ответ 4

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

 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 из БД.