Я хочу предварительно загрузить много изображений при запуске приложения, что-то вроде разовой вещи.
У меня есть класс Image
, который содержит URL своего изображения, хранящегося в облаке как хранилище BLOB-объектов (этот адрес https адрес BTW)
Я хочу загрузить байты изображения из облака, сохранить их на объекте, затем, когда придет время показать изображение, загрузить изображение из его байтов.
У меня есть весь код для этого, но я продолжаю получать исключение:
Компонент формирования изображения, подходящий для выполнения этой операции, не найден.
Вот мой код: РЕДАКТИРОВАТЬ ОБНОВЛЕНО ИСПРАВЛЕНИЕМ
//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 () я получаю исключение.
Я провел некоторое тестирование, и если я загружаю файл из моей локальной файловой системы, я получаю набор байтов, отличный от набора изображений в облаке. Я предполагаю, что это как-то связано с хранилищем BLOB-объектов или https?
И да, я могу просмотреть это изображение, и оно не повреждено.
РЕДАКТИРОВАТЬ, исправлено все хорошо