2012-03-25 15 views
3

私は偉大な作業をしている必要に応じて写真をダウンロードするアプリがありますが、しばらくしてファイルが保存されていて、イメージの一部だけ残りが灰色で表示されます。たとえば、上位25%が実際の画像になり、下位75%が灰色になります。iOSアプリでダウンロードした画像が壊れていないかどうか確認するにはどうすればいいですか?

ここでイメージをダウンロードするコードは、レスポンスコードが200の場合、要求が正しく完了したと想定しています。それは私がしようとするとUIImageViewにこのイメージをロードし、それがロードされない場合は、このイメージが破損しているが、解決策がないように、私のイメージは問題なく、この腐敗した形式でロードすることを言います。この[https://stackoverflow.com/questions/5699645/can-i-check-if-downloaded-image-is-corrupt-or-not-before-saving]質問から

ASIHTTPRequest *requestl = [ASIHTTPRequest requestWithURL:[NSURL URLWithString:URLLarge]]; 
     [requestl startSynchronous]; 
     if ([requestl responseStatusCode]==200) { 
      NSData *responseData = [requestl responseData]; 
      NSError *writeError = nil; 
      [responseData writeToFile:savePathLarge options:NSDataWritingFileProtectionNone error:&writeError]; 
      if (writeError !=nil) { 
       NSLog(@"\n\n Write returned error: %@ \n\n", [writeError localizedDescription]); 
      } 
} 

私のために働く。

+0

['NSImage']の作成を試しましたか(http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/ Classes/nsimage_Class/Reference/Reference.html)、それに 'isValid'を呼び出しますか? – dasblinkenlight

+0

私が知る限り、腐敗が微妙であれば、iOSイメージAPIはあなたを助けません。私はあなたがダウンロードプロセスを見て、ダウンロードがいつ早く終了するかを試してみる必要があると思います。たとえば、Content-Lengthヘッダーを確認し、すべてのバイトを取得することを確認します。残念ながら、ASIHTTPRequestがどのようにエラーや早期終了を処理するかを知るには十分な知識がありません。 – EricS

+0

@EricSと同意します。 URLがロードされるときにNSLoggingすることで、それがWebサービスの問題であることを二重に確認するかもしれません。醜いイメージが見えるときは、ログに記録されたURLをブラウザにコピーして貼り付けて、そこに悪いように見えます。 – danh

答えて

1

これが規則正しい場合は、画像をダウンロードする際に問題が発生しているか、サーバーに問題がある可能性があります。しかし、まだ

デバイスのイメージのMD5ハッシュを生成し、サーバーに格納されているイメージのハッシュと比較しようとします。彼らが一致しない場合は、何かが間違っていたことを知っている。

これを行うには独自のサーバーが必要になるでしょう。これを行うPHPスクリプトを簡単に書くことができます(オンラインガイドにする必要があります)。スクリプトがイメージと同じサーバー上にあった場合(ただし、自分のサーバーであるかどうかは言及していません)

関連する問題