Я хочу предварительно загрузить много изображений, когда мое приложение запустится, что-то однократно.WPF загружает изображения байтов из Blob Storage
У меня есть Image
класс, который содержит URL-адрес своего изображения, хранящегося в облаке как хранилище больших двоичных объектов (этот адрес является HTTPS адрес BTW)
Я хочу, чтобы загрузить байты изображения из облака, магазин их на объекте, затем, когда придет время показать изображение, загрузите изображение из его байтов.
У меня есть все для этого кода, но я получаю исключение:
Нет компоненты изображения, пригодных для выполнения этой операции был найден.
Вот мой код: EDIT ОБНОВЛЕНО С FIX
//Loaded on start-up
private static void LoadImageBytes(Image img)
{
var urlUri = new Uri(img.Url);
var request = (HttpWebRequest)WebRequest.CreateDefault(urlUri);
MemoryStream memStream = new MemoryStream();
using (var response = request.GetResponse())
{
var buffer = new byte[4096];
using (var stream = response.GetResponseStream())
{
int bytesRead = stream.Read(buffer, 0, buffer.Length);
while (bytesRead > 0)
{
memStream.Write(buffer, 0, bytesRead);
bytesRead = stream.Read(buffer, 0, buffer.Length);
}
img.ImageBytes = memStream.ToArray();
}
}
}
Затем, когда я хочу, чтобы получить изображение на экране я называю это:
public BitmapImage ImageFromBuffer(Byte[] bytes)
{
MemoryStream stream = new MemoryStream(bytes);
stream.Seek(0, SeekOrigin.Begin);
BitmapImage image = new BitmapImage();
image.BeginInit();
image.StreamSource = stream;
image.EndInit();
return image;
}
Но в EndInit() call Я получаю исключение.
Я провел некоторое тестирование, и если я загружу файл из своей локальной файловой системы, я получаю другой набор байтов по сравнению с изображением в облаке. Я предполагаю, что это связано с хранилищем blob или https?
И да, я могу перейти к этому изображению, и его не испорчено.
EDIT, сейчас исправлен все хорошо
ну нет, я думаю, не – Mark
это было неправильно, я добавил – Mark