当创建与损坏的/不完整的JPEG数据的的UIImage,控制台将打印出捕捉错误:损坏JPEG数据:数据段的过早结束
<Error>: Corrupt JPEG data: premature end of data segment
的不完整的图像将被显示,用灰色填充不完整的部分。我不希望发生这种情况。
我拼命尝试try-catch块,但它没有捕获到错误。有什么方法可以捕捉错误?
当创建与损坏的/不完整的JPEG数据的的UIImage,控制台将打印出捕捉错误:损坏JPEG数据:数据段的过早结束
<Error>: Corrupt JPEG data: premature end of data segment
的不完整的图像将被显示,用灰色填充不完整的部分。我不希望发生这种情况。
我拼命尝试try-catch块,但它没有捕获到错误。有什么方法可以捕捉错误?
取决于你如何获取数据等。也许这是你在找什么:iphone-corrupt-jpeg-data-for-image-received-over-http
一个简单的方法来检查,如果JPEG数据是完整的还是不被检查的第一个和最后两个字节分别为FF D8和FF D9。这两个字节分别标识JPEG文件的开始和结束。
针对上述斯利的问题,这是我使用的方法:
-(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);
}
这将工作作为我的目的的解决方案。但我仍然很好奇这个错误是如何被捕获的。 – samwize 2010-10-04 01:48:45
前2个字节应该是FF D8 – samwize 2010-10-04 01:53:21
,所以如果我从iOS磁盘中将JPG表示为NSData,我将如何检查最后2位数字? – Slee 2012-06-12 16:46:25