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

Iphone 捕获错误:损坏的JPEG数据:数据段过早结束,iphone,uiimage,jpeg,Iphone,Uiimage,Jpeg,创建包含损坏/不完整JPEG数据的UIImage时,控制台将打印输出 :损坏的JPEG数据:数据段过早结束 将显示不完整的图像,灰色填充不完整的部分。我不希望这种情况发生 我拼命尝试了一个try-catch块,但它没有捕捉到错误。有什么方法可以捕捉到错误吗?取决于您获取数据的方式等。也许这就是您要寻找的: 检查JPEG数据是否完整的一种简单方法是分别检查FF D8和FF D9的前两个字节和后两个字节。这两个字节分别标识JPEG文件的开始和结束。针对Slee的上述问题,我使用以下方法: -(BOO

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

:损坏的JPEG数据:数据段过早结束

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


我拼命尝试了一个try-catch块,但它没有捕捉到错误。有什么方法可以捕捉到错误吗?

取决于您获取数据的方式等。也许这就是您要寻找的:


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

针对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);
}
-(BOOL)数据有效性(NSData*)数据
{
如果(!data | | data.length<2)返回否;
NSInteger totalBytes=data.length;
常量字符*字节=(常量字符*)[数据字节];
返回(字节[0]==(字符)0xff&&
字节[1]==(字符)0xd8&&
字节[totalBytes-2]==(字符)0xff&&
字节[totalBytes-1]==(字符)0xd9);
}

这将作为我的解决方案。但我仍然好奇如何捕捉错误。前2个字节应该是FF D8,因此如果我将JPG表示为来自iOS磁盘的NSData,我将如何检查最后2个数字?