如何在iOS应用中检查下载的图像是否已损坏?

时间:2012-03-25 17:46:45

标签: iphone objective-c ios asihttprequest

我有一个iPhone应用程序,可以根据需要下载照片,效果很好但偶尔文件被保存时会被破坏,只有部分图像会显示,其余部分显示为灰色。例如,前25%将是实际图像,而较低的75%将是灰色。

这是下载图像的代码,我假设响应代码为200意味着请求已正确完成。

   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]);
            }
}

从这个[https://stackoverflow.com/questions/5699645/can-i-check-if-downloaded-image-is-corrupt-or-not-before-saving]问题来看,如果我尝试在UIImageView中加载此图像并且它没有加载此图像已损坏但我的图像将以这种损坏的格式加载而没有问题,因此解决方案不会为我工作。

1 个答案:

答案 0 :(得分:1)

如果这种情况经常发生,您可能在下载图像时出现问题,或者服务器出现问题。但仍然

一种方法是在设备上生成图像的MD5哈希值,然后尝试将其与存储在服务器上的图像的哈希值进行比较。如果他们不匹配,那么你就知道出了什么问题。

您可能需要自己的服务器来执行此操作,您可以轻松编写PHP脚本来为您执行此操作(应该是在线指南),如果脚本与图像位于同一服务器上会更好(但你没有提到它是否是你自己的服务器)

相关问题