Я пытаюсь сделать простую вещь, но я не могу ...Синхронно загрузить изображение из URL
Я просто хочу, чтобы получить BitmapImage из Интернета URL, но моя функция, кажется, не работает правильно, он возвращает мне лишь небольшую часть изображения. Я знаю, что WebResponse работают async, и это, конечно, почему у меня есть эта проблема, но как я могу сделать это синхронно?
Вот моя функция:
internal static BitmapImage GetImageFromUrl(string url)
{
Uri urlUri = new Uri(url);
WebRequest webRequest = WebRequest.CreateDefault(urlUri);
webRequest.ContentType = "image/jpeg";
WebResponse webResponse = webRequest.GetResponse();
BitmapImage image = new BitmapImage();
image.BeginInit();
image.StreamSource = webResponse.GetResponseStream();
image.EndInit();
return image;
}
Спасибо большое за вашу помощь.
Мне не очень повезло, мое изображение по-прежнему частично загружено в MemoryStream, может быть, вы можете предоставить мне пример кода? – Karnalta
При чтении из потока ответов он не заполняет буфер, как это было бы при чтении из локального файла. Таким образом, количество прочитанных байтов будет меньше, чем размер буфера. Однако оно будет больше 0, что указывает, что конец файла еще не достигнут. Я полагаю, что это ключ к отказу от чтения изображения полностью из URL-адреса. – treaschf
Хорошо, этот образец работы для загрузки изображения, теперь я должен был бы преобразовать этот файл в BitmapImage. – Karnalta