2012-02-13 16 views
9

Recibo este error descargando una imagen por HTTP. He consultado answer here pero incluso las imágenes válidas no devuelven YES de la función.ImageIO: <ERROR> JPEG Datos JPEG corruptos: final prematuro del segmento de datos iphone: cómo detectar esto?

¿Alguna otra idea?

El código para obtener la imagen es bastante simple. Esto sucede en un hilo de fondo.

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

Esta es la función de ese hilo:

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

Respuesta

13

Uso un unsigned char. Entonces la comparación debería funcionar.

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

en lugar de

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

+1 gracias, Sigi! – Jean

+0

Sí, parece que esto funciona. ¡Gracias! – jmosesman

+0

Todavía muestra el error: : ImageIO: JPEG Datos JPEG corruptos: final prematuro del segmento de datos. :( –

Cuestiones relacionadas