【问题标题】:ImageIO: <ERROR> JPEG Corrupt JPEG data: premature end of data segment iphone - how to catch this?ImageIO: <ERROR> JPEG Corrupt JPEG data: 数据段过早结束 iphone - 如何捕捉到这个?
【发布时间】:2012-02-13 17:50:46
【问题描述】:

我通过 HTTP 下载图像时收到此错误。我查看了answer here,但即使是有效图像也不会从函数返回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;
}

【问题讨论】:

    标签: iphone ios ios4 uiimage javax.imageio


    【解决方案1】:

    使用无符号字符。然后比较应该可以工作。

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

    而不是

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

    【讨论】:

    • 仍然显示错误:: ImageIO: JPEG Corrupt JPEG data: early end of data segment。 :(
    猜你喜欢
    • 2011-04-20
    • 2012-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多