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?

Author: Joseph Earl, 2010-10-03

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.

 13
Author: Vaayu,
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);
}
 23
Author: roperklacks,
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