У меня есть следующий код:
var request = (HttpWebRequest)HttpWebRequest.Create(url);
var response = request.GetResponse();
var stream = response.GetResponseStream();
if (stream != null) {
Image newImage = Image.FromStream(stream, true);
pic.Thumb = newImage.ImageToByteArray();
}
Что произойдет, если время чтения истекло?Или соединение прервано во время загрузки?
В документах говорится, что оно выдаст ArgumentException
, если это недопустимый формат или значение NULL, но я понятия не имею, будет ли выброшено это исключение, если изображениезагружается только частично.
К сожалению, я не могу полагаться на заголовок ContentLength, чтобы сказать мне правильный размер файла, потому что сервер лежит и выдает большую длину контента, чем файл на самом деле.Поэтому я надеюсь, что Image.FromStream сможет определить, завершено ли изображение.
Кто-нибудь может подсказать здесь?
Примечание. ImageToByteArray - это просто метод расширения, использующий поток памяти для преобразования Image
в byte[]
ОБНОВЛЕНИЕ:
Согласно Дарину, затемExternalException выдается при попытке сохранить изображение.Однако мое собственное тестирование, в котором я обрезал файл изображения, показывает, что FromStream
фактически выдает исключение ArgumentException, если изображение не соответствует правильному количеству байтов.