私は偉大な作業をしている必要に応じて写真をダウンロードするアプリがありますが、しばらくしてファイルが保存されていて、イメージの一部だけ残りが灰色で表示されます。たとえば、上位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]);
}
}
私のために働く。
['NSImage']の作成を試しましたか(http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/ Classes/nsimage_Class/Reference/Reference.html)、それに 'isValid'を呼び出しますか? – dasblinkenlight
私が知る限り、腐敗が微妙であれば、iOSイメージAPIはあなたを助けません。私はあなたがダウンロードプロセスを見て、ダウンロードがいつ早く終了するかを試してみる必要があると思います。たとえば、Content-Lengthヘッダーを確認し、すべてのバイトを取得することを確認します。残念ながら、ASIHTTPRequestがどのようにエラーや早期終了を処理するかを知るには十分な知識がありません。 – EricS
@EricSと同意します。 URLがロードされるときにNSLoggingすることで、それがWebサービスの問題であることを二重に確認するかもしれません。醜いイメージが見えるときは、ログに記録されたURLをブラウザにコピーして貼り付けて、そこに悪いように見えます。 – danh