Загрузка и сохранение изображения, которое может быть пустым - PullRequest
1 голос
/ 07 ноября 2010

Я загружаю и сохраняю изображение радара (в формате .gif) с веб-сайта, используя NSURLConnection. В методе connectionDidFinishLoading: я создаю изображение, используя [UIImage imageWithData:].

- (void)connectionDidFinishLoading:(NSURLConnection *)connection  
{  
    // Problem is here. mutableData declared earlier.
    UIImage *baseImage = [UIImage imageWithData:mutableData];  

    if (baseImage)  
    {
        // do stuff with image
    }

    [mutableData release];
}

Проблема в том, что загружаемые мной изображения иногда пустые и имеют четкий фон. Это НЕ ошибка в изображении (иногда на радаре нечего возвращать). Но когда это происходит, я получаю эту ошибку в консоли. Ошибка также может возникать, когда изображение имеет очень небольшое количество пикселей (1 или 2).

Error: ImageIO: malformed GIF frame#0 (600 x 550)

При возникновении ошибки создается изображение, равное нулю. 600x550 - это размер изображения, которое я загружаю, в пикселях. Таким образом, возвращаемое изображение в nil, что создает впечатление, что загрузка не удалась.

Стоит отметить, что baseImage может дать сбой в 2 случаях, упомянутом выше, или когда я загружаю изображение, которое указано на сервере, которого еще нет. Во втором случае mutableData содержит строку ошибки. Мне все еще нужно, чтобы 2-ой случай потерпел неудачу, поэтому я знаю, что изображение не было успешно загружено.

Что мне нужно сделать в этом случае, так это создать чистое изображение и сохранить его, чтобы пользователь мог видеть, что загрузка выполнена правильно.

Есть идеи?

Спасибо, Росс

Ответы [ 2 ]

2 голосов
/ 11 ноября 2010

Используя этот код:

    NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"https://files.me.com/ross.kimes/6cuagt"]];
UIImage *image = [UIImage imageWithData:data];
NSLog(@"%@", image);

Боюсь, я не получаю ошибок в консоли и допустимого объекта UIImage: (


Я полагаю, что вы могли бы обнаружить наличие строки = - т.е. NSSTring stringWithData: encoding: - если это допустимая строка и изображение равно nil, вы, вероятно, можете предположить, что это сообщение об ошибке?

0 голосов
/ 11 ноября 2010

Может быть, вы можете попробовать что-то вроде:

@try{
NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"https://files.me.com/ross.kimes/6cuagt"]];
UIImage *image = [UIImage imageWithData:data];
}@catch (NSException *ex) {
//Something goes wrong, create the image
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...