Errore di cattura: dati JPEG corrotti: fine prematura del segmento di dati

Quando si crea un UIImage con dati JPEG corrotti / incompleti, la console verrà stampata

: Corrupt JPEG data: premature end of data segment

L’immagine incompleta verrà mostrata, con il grigio che riempie la parte incompleta. Non voglio che ciò accada.

Ho provato disperatamente con un blocco try-catch ma non rileva l’errore. C’è un modo per cogliere l’errore?

Dipende da come stai ottenendo i dati, ecc. Forse questo è quello che stai cercando: iphone-corrupt-jpeg-data-per-image-received-over-http

Un modo semplice per verificare se i dati JPEG sono completi o no è controllare il primo e l’ultimo di due byte rispettivamente per FF D8 e FF D9. Questi due byte identificano rispettivamente l’inizio e la fine di un file JPEG.

In risposta alla domanda di Slee sopra, questo è il metodo che uso:

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