Catching error: Corrupt JPEG data: premature end of data segment

主宰稳场 提交于 2019-12-28 02:39:05

问题


When creating an UIImage with corrupt/incomplete JPEG data, the console will print out

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

The incomplete image will be shown, with grey filling up the incomplete part. I do not want this to happen.

I desperately tried with a try-catch block but it does not catch the error. Is there any way to catch the error?


回答1:


Depends on how you are getting the data etc. Maybe this is what you are looking for: iphone-corrupt-jpeg-data-for-image-received-over-http

A simple way to check if the JPEG data is complete or not is to check the first and last two bytes for FF D8 and FF D9 respectively. Those two bytes identify the start and end of a JPEG file respectively.




回答2:


In response to Slee's question above, this is the method I use:

-(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);
}


来源:https://stackoverflow.com/questions/3848280/catching-error-corrupt-jpeg-data-premature-end-of-data-segment

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!