下载并保存可以为空的图像

时间:2010-11-07 18:19:01

标签: iphone objective-c ios uiimage

我正在使用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包含一个错误字符串。我仍然需要第二种情况失败,所以我知道图像没有成功下载。

在这种情况下我需要做的是实际创建空白图像并保存,以便用户能够看到下载正确执行。

有什么想法吗?

谢谢, 罗斯

2 个答案:

答案 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
}