【发布时间】:2012-03-25 17:46:45
【问题描述】:
我有一个 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 中加载此图像并且它不加载此图像已损坏,但我的图像将以这种损坏的格式加载而不会出现问题,因此解决方案不适用于我。
【问题讨论】:
-
您是否尝试过创建
NSImage并在其上调用isValid? -
据我所知,如果损坏很微妙,iOS 图像 API 都不会帮助您。我认为您需要查看下载过程并尝试找出下载提前终止的时间。例如,检查 Content-Length 标头并确保您获得所有字节。不幸的是,我对 ASIHTTPRequest 了解得不够多,不知道它如何处理错误和提前终止。
-
同意@EricS。您可以通过在加载时对 url 进行 NSLogging 来仔细检查是否是 Web 服务的问题。当您看到丑陋的图像时,将记录的 url 复制/粘贴到浏览器中,看看它是否在那里看起来很糟糕。
标签: iphone objective-c ios asihttprequest