Ich habe eine iPhone-App, die Fotos nach Bedarf herunterladen wird, die funktioniert gut, aber hin und wieder die Dateien werden beschädigt gespeichert und nur ein Teil des Bildes wird angezeigt, der Rest wird in grau angezeigt. Zum Beispiel sind die oberen 25% das tatsächliche Bild und die unteren 75% sind grau.Wie kann ich prüfen, ob das heruntergeladene Bild in der iOS App beschädigt ist oder nicht?
Hier ist mein Code zum Herunterladen der Bilder, ich nahm an, ein Antwortcode von 200 bedeutete, dass die Requests ordnungsgemäß abgeschlossen wurde.
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]);
}
}
Von diesem [https://stackoverflow.com/questions/5699645/can-i-check-if-downloaded-image-is-corrupt-or-not-before-saving] Frage heißt es, dass, wenn ich in einem UIImageView dieses Bild versuchen und laden und nicht geladen dieses Bild beschädigt ist, aber meine Bilder werden in diesem korrupten Format ohne Probleme geladen werden, so dass Lösung nicht der Fall ist arbeite für mich.
Haben Sie versucht, ['NSImage'] zu erstellen (http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/ Classes/nsimage_Class/Reference/Reference.html) und ruft 'isValid' darauf auf? – dasblinkenlight
Soweit ich weiß, wird keine der iOS-Image-APIs Ihnen helfen, wenn die Korruption subtil ist. Ich denke, Sie müssen sich den Download-Prozess ansehen und versuchen herauszufinden, wann der Download vorzeitig beendet wurde. Überprüfen Sie beispielsweise den Content-Length-Header und stellen Sie sicher, dass Sie alle Bytes erhalten. Leider weiß ich nicht genug über ASIHTTPRequest zu wissen, wie es Fehler und vorzeitige Beendigung behandelt. – EricS
Stimmen Sie mit @EricS überein. Sie können überprüfen, ob es das Problem des Webdiensts ist, indem Sie die URLs beim Laden NSLoggen. Wenn Sie ein hässliches Bild sehen, kopieren Sie die geloggte URL in den Browser und sehen Sie, ob es dort schlecht aussieht. – danh