捕获错误:损坏的JPEG数据:数据段的过早结束

时间:2010-10-03 02:11:38

标签: iphone uiimage jpeg

创建包含损坏/不完整JPEG数据的UIImage时,控制台将打印出

<Error>: Corrupt JPEG data: premature end of data segment

将显示不完整的图像,灰色填满不完整的部分。我不希望这种情况发生。

我拼命尝试使用try-catch块,但它没有发现错误。有没有办法抓住错误?

2 个答案:

答案 0 :(得分:23)

回答上面关于Slee的问题,这是我使用的方法:

-(BOOL)dataIsValidJPEG:(NSData *)data
{
    if (!data || data.length < 2) return NO;

    NSInteger totalBytes = data.length;
    const char *bytes = (const char*)[data bytes];

    return (bytes[0] == (char)0xff && 
            bytes[1] == (char)0xd8 &&
            bytes[totalBytes-2] == (char)0xff &&
            bytes[totalBytes-1] == (char)0xd9);
}

答案 1 :(得分:13)

取决于您如何获取数据等。也许这就是您所需要的:iphone-corrupt-jpeg-data-for-image-received-over-http

检查JPEG数据是否完整的简单方法是分别检查FF D8和FF D9的前两个字节。这两个字节分别标识JPEG文件的开头和结尾。