代码之家  ›  专栏  ›  技术社区  ›  samwize

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

  •  14
  • samwize  · 技术社区  · 14 年前

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

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

    将显示不完整的图像,灰色填充不完整的部分。我不想发生这种事。

    我拼命尝试了一个try-catch块,但它没有捕捉到错误。有没有办法抓住错误?

    2 回复  |  直到 13 年前
        1
  •  14
  •   Community paulsm4    7 年前

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

    检查JPEG数据是否完整的一个简单方法是分别检查ffd8和ffd9的前两个字节和后两个字节。这两个字节分别标识JPEG文件的开始和结束。

        2
  •  23
  •   roperklacks    12 年前

    针对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);
    }