當創建與損壞的/不完整的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