Błąd przechwytywania: uszkodzone dane JPEG: przedwczesny koniec segmentu danych
Podczas tworzenia interfejsu użytkownika z uszkodzonymi/niekompletnymi danymi JPEG, konsola wydrukuje
<Error>: Corrupt JPEG data: premature end of data segment
Zostanie wyświetlony niekompletny obraz, z szarym wypełnieniem niekompletnej części. Nie chcę, żeby to się stało.
Rozpaczliwie próbowałem z blokiem try-catch, ale nie łapie błędu. Czy jest jakiś sposób, aby złapać błąd?
2 answers
Zależy od tego, w jaki sposób otrzymujesz dane itp. Może to jest to, czego szukasz: iphone-corrupt-jpeg-data-for-image-received-over-http
Prostym sposobem sprawdzenia, czy dane JPEG są kompletne, jest sprawdzenie pierwszych i ostatnich dwóch bajtów odpowiednio dla FF D8 i FF D9. Te dwa bajty identyfikują odpowiednio początek i koniec pliku JPEG.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 10:29:21
W odpowiedzi na powyższe pytanie Slee, jest to metoda, której używam:
-(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);
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-06-15 16:09:09