Ответ 1
Вы можете использовать BitmapImage
и устанавливает StreamSource
в поток, содержащий двоичные данные. Если вы хотите сделать stream
с byte[]
, используйте MemoryStream
:
MemoryStream stream = new MemoryStream(bytes);
У меня есть byte[]
, который представлен Image
. Я загружаю этот Image
через WebClient
. Когда WebClient
загрузил изображение, и я ссылаюсь на него с помощью его URL-адреса, я получаю byte[]
. Мой вопрос: как загрузить byte[]
в элемент Image
в WPF? Спасибо.
Примечание. Это дополняет вопрос, который я задал здесь: Сгенерировать изображение во время выполнения. Я не могу найти такой подход к работе, поэтому я пытаюсь использовать другой подход.
Вы можете использовать BitmapImage
и устанавливает StreamSource
в поток, содержащий двоичные данные. Если вы хотите сделать stream
с byte[]
, используйте MemoryStream
:
MemoryStream stream = new MemoryStream(bytes);
Создайте BitmapImage
из MemoryStream
, как показано ниже:
MemoryStream byteStream = new MemoryStream(bytes);
BitmapImage image = new BitmapImage();
image.BeginInit();
image.StreamSource = byteStream;
image.EndInit();
И в XAML вы можете создать элемент управления Image
и установить выше Image
как свойство Source
.
В .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);
}
Один из способов, которым я понял, как это сделать, чтобы он был быстрым и безопасным потоком, был следующим:
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 из БД.