ImageIO:<;错误>;JPEG损坏的JPEG数据:iphone数据段过早结束-如何捕获?

ImageIO:<;错误>;JPEG损坏的JPEG数据:iphone数据段过早结束-如何捕获?,iphone,ios,ios4,uiimage,javax.imageio,Iphone,Ios,Ios4,Uiimage,Javax.imageio,我通过HTTP下载一个图像得到这个错误。我已经查看了,但即使是有效的图像也不会从函数返回YES 还有其他想法吗 获取图像的代码非常简单。这在后台线程中发生 NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:urlString]]; UIImage *image = [UIImage imageWithData:data]; 这是该线程的函数: - (BOOL)isJPEGValid:(NSData *)jpeg

我通过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;
}
-(BOOL)是jpeg有效的:(NSData*)jpeg{
if([jpeg长度]<4)返回否;
常量字符*字节=(常量字符*)[jpeg字节];
如果(字节[0]!=0xFF | |字节[1]!=0xD8)返回否;
如果(字节[[jpeg长度]-2]!=0xFF | |
字节[[jpeg长度]-1]!=0xD9)返回编号;
返回YES;
}

使用无符号字符。那么比较应该是有效的

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

const char * bytes = (const char *)[jpeg bytes];
它仍然显示错误::ImageIO:JPEG损坏的JPEG数据:数据段过早结束:(