ImageIO:<ERROR> JPEG损坏的JPEG数据:数据段iphone的过早结束 - 如何捕获这个?

jmo*_*man 9 iphone uiimage ios4 ios javax.imageio

我通过HTTP下载图像得到此错误.我在这里看了答案,但即使是有效的图像也没有YES从函数返回.

还有其他想法吗?

获取图像的代码非常简单.这发生在后台线程中.

NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:urlString]];
UIImage *image = [UIImage imageWithData:data];
Run Code Online (Sandbox Code Playgroud)

这是该线程的功能:

- (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;
}
Run Code Online (Sandbox Code Playgroud)

Sig*_*igi 13

使用unsigned char.然后比较应该工作.

const unsigned char * bytes = (const unsigned char *)[jpeg bytes];
Run Code Online (Sandbox Code Playgroud)

代替

const char * bytes = (const char *)[jpeg bytes];
Run Code Online (Sandbox Code Playgroud)