Вопрос по uiimage, image, iphone, objective-c – Как я могу проверить файл изображения, который я загружаю из Интернета на iPhone?

4

Я загружаю изображения, используя метод sendSynchronousRequest NSURLConnection, и это прекрасно работает. Однако иногда я сталкиваюсь с проблемой, когда URL-адрес изображения указывает на что-то, кроме файла изображения. Например, я обнаружил, что этот URL без изображения вызывает проблемы:http://www.100plusposters.com/images/ExoticFlowers.jpg  URL возвращает веб-страницу, которая, как я полагаю, возникает из-за того, что изображение отсутствует на сайте.

Одна хорошая вещь в Objective-C состоит в том, что неверное изображение не вызывает сбой. Он просто и тихо продолжается и просто не отображает никакого изображения, но это все еще проблема.

Как я могу проверить возвращенные данные, чтобы убедиться, что это правильный файл изображения перед его отображением?

Спасибо!

Мой соответствующий код, на случай, если это поможет ...

NSError *error = nil;
NSURLResponse *response;
NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:5];

NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];

if(data != nil && [error localizedDescription] == nil) 
{
    //Create UIImage object using initWithData method
    //Display UIImage
}

Ваш Ответ

3   ответа
8

Похоже, NSURLResponse объект содержитMIMEType свойство, Это должно дать вам довольно хорошее представление о типе возвращаемых данных.

Это работает отлично. Спасибо! Ken Pespisa
4

Можем ли мы пойти на этот вопрос еще дальше? Что если данные изображения являются неполными или повреждены с сервера? Полный транспорт работает, MIME-тип - image / jpeg, UIImage сконструирован и не имеет значения nil, но средство визуализации обнаруживает несоответствия в данных, и в журнале может отображаться «Код плохого Хаффмана». или «преждевременный конец сегмента данных»;

Как бы я зафиксировал эту ошибку, прежде чем выбросить UIImage в контекст представления и, таким образом, получить не очень красивое изображение на экране?

0

Я думаю, что путем перекрестной проверки длины содержимого, полученной из заголовка запроса Http, и, наконец, полученных данных, вы получите, были ли загруженные данные завершены или нет.

О коррумпированных я не имею много информации.

Похожие вопросы