我正在使用NSURLConnection从web下载并保存雷达图像(.gif格式)。在connectionDidFinishLoading:方法中,我使用[UIImage imageWithData:]创建一个图像。
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
// Problem is here. mutableData declared earlier.
UIImage *baseImage = [UIImage imageWithData:mutableData];
if (baseImage)
{
// do stuff with image
}
[mutableData release];
}
问题是我下载的图像有时是空白的,背景清晰。这不是图像中的错误(有时雷达上没有任何东西可以返回)。但是当发生这种情况时,我在控制台中收到此错误。当图像具有非常少量的像素(1或2)时,也会发生错误。
Error: ImageIO: malformed GIF frame#0 (600 x 550)
发生错误时,创建的图像为零。 600x550是我正在下载的图像的px大小。因此返回的图像为nil,这使得它看起来像下载失败了。
值得注意的是,baseImage可能在2种情况下失败,上面提到的那种情况,或者当我下载服务器上列出的实际上还没有的映像时。在第二种情况下,mutableData包含一个错误字符串。我仍然需要第二种情况失败,所以我知道图像没有成功下载。
在这种情况下我需要做的是实际创建空白图像并保存,以便用户能够看到下载正确执行。
有什么想法吗?
谢谢, 罗斯
答案 0 :(得分:2)
使用此代码:
NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"https://files.me.com/ross.kimes/6cuagt"]];
UIImage *image = [UIImage imageWithData:data];
NSLog(@"%@", image);
我担心在控制台和有效的UIImage对象中没有错误:(
我想你可以检测到字符串的存在= - 即NSSTring stringWithData:encoding: - 如果它是一个有效的字符串且图像是nil你可能会认为这是一条错误信息吗?
答案 1 :(得分:0)
也许你可以这样:
@try{
NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"https://files.me.com/ross.kimes/6cuagt"]];
UIImage *image = [UIImage imageWithData:data];
}@catch (NSException *ex) {
//Something goes wrong, create the image
}