2012-02-13 1 views
9

HTTPで画像をダウンロードするとこのエラーが発生します。私はanswer hereを見ましたが、有効な画像でさえも、関数からYESが返されません。ImageIO:<ERROR> JPEG壊れたJPEGデータ:データセグメントの早すぎる部分iphone - これをどのように捕まえるのですか?

他のアイデアはありますか?

画像を取得するためのコードは十分に簡単です。これはバックグラウンドスレッドで発生します。

NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:urlString]]; 
UIImage *image = [UIImage imageWithData:data]; 

これは、そのスレッドからの関数である。

- (BOOL)isJPEGValid:(NSData *)jpeg { 
    if ([jpeg length] < 4) return NO; 
    const char * bytes = (const char *)[jpeg bytes]; 
    if (bytes[0] != 0xFF || bytes[1] != 0xD8) return NO; 
    if (bytes[[jpeg length] - 2] != 0xFF || 
      bytes[[jpeg length] - 1] != 0xD9) return NO; 
    return YES; 
} 

答えて

13

はunsigned char型を使用します。それで比較がうまくいくはずです。

const unsigned char * bytes = (const unsigned char *)[jpeg bytes]; 

代わりの

​​
+0

+1、SIGIをありがとう! – Jean

+0

これはうまくいくようです。ありがとう! – jmosesman

+0

それでも、エラー::ImageIO:JPEGが破損しています。JPEGデータが破損しています:データセグメントの時期尚早です。 :( –

関連する問題