ImageIO: <ERROR>JPEG Поврежденные данные JPEG: преждевременный конец сегмента данных iphone - как это уловить? - PullRequest
9 голосов
/ 13 февраля 2012

Я получаю эту ошибку, загружая изображение по HTTP. Я посмотрел ответ здесь , но даже действительные изображения не возвращают YES из функции.

Есть еще идеи?

Код для получения изображения достаточно прост. Это происходит в фоновом потоке.

NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:urlString]];
UIImage *image = [UIImage imageWithData:data];

Это функция из этого потока:

- (BOOL)isJPEGValid:(NSData *)jpeg {
    if ([jpeg length] < 4) return NO;
    const char * bytes = (const char *)[jpeg bytes];
    if (bytes[0] != 0xFF || bytes[1] != 0xD8) return NO;
    if (bytes[[jpeg length] - 2] != 0xFF || 
            bytes[[jpeg length] - 1] != 0xD9) return NO;
    return YES;
}

1 Ответ

13 голосов
/ 03 апреля 2012

Используйте неподписанный символ. Тогда сравнение должно работать.

const unsigned char * bytes = (const unsigned char *)[jpeg bytes];

вместо

const char * bytes = (const char *)[jpeg bytes];
...