2012-02-13 6 views
9

Otrzymuję ten błąd, pobierając obraz przez HTTP. Spojrzałem na answer here, ale nawet prawidłowe obrazy nie zwracają YES z funkcji.ImageIO: <ERROR> Uszkodzone dane JPEG w formacie JPEG: przedwczesny koniec segmentu danych iphone - jak to złapać?

Jakieś inne pomysły?

Kod potrzebny do uzyskania obrazu jest dość prosty. Dzieje się to w wątku tła.

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

to funkcja z tej nici:

- (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; 
} 

Odpowiedz

13

Zastosowanie unsigned char. Porównanie powinno zadziałać.

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

zamiast

const char * bytes = (const char *)[jpeg bytes]; 
+0

+1 dziękuję, Sigi! – Jean

+0

Tak, to wydaje się działać. Dzięki! – jmosesman

+0

Wciąż pokazuje błąd: : ImageIO: uszkodzone dane JPEG w formacie JPEG: przedwczesny koniec segmentu danych. :( –

Powiązane problemy