从iOS中的url获取图像

从iOS中的url获取图像,ios,uiimage,base64,Ios,Uiimage,Base64,我正在尝试从url获取图像并在ImageView中显示它。图像以Base64编码数据进行编码。我使用下面的代码 UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:url scale:2.0]; [ImageView setImage: image]; 任何人都能提出问题所在。一个很大的可能性是,无论出于何种原因,包含URL内容的数据都失败了。您应该改用dataW

我正在尝试从url获取图像并在ImageView中显示它。图像以Base64编码数据进行编码。我使用下面的代码

UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:url scale:2.0];

[ImageView setImage: image];

任何人都能提出问题所在。

一个很大的可能性是,无论出于何种原因,包含URL内容的数据都失败了。您应该改用dataWithContentsOfURL:options:error:并执行一些错误处理

编辑:


事实上,您根本不应该使用NSData方法下载图像数据。Apple文档特别声明它们仅适用于本地资源,并建议您在下载时使用此NSURLSession方法:NSURLSessionDataTask*dataTaskWithURL:NSURL*url completionHandler:void^NSData*data,NSURLRResponse*response,nError*errorcompletionHandler

可能它不起作用,因为您必须登录才能查看代码段中引用的URL中的图像。
如果我尝试从URL查看图像,它会告诉我登录。

请尝试以下两种方法。它们都来自此处:

您可以使用以下方法将其解码为NSData:

-(NSData *)dataFromBase64EncodedString:(NSString *)string{
    if (string.length > 0) {

        //the iPhone has base 64 decoding built in but not obviously. The trick is to
        //create a data url that's base 64 encoded and ask an NSData to load it.
        NSString *data64URLString = [NSString stringWithFormat:@"data:;base64,%@", string];
        NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:data64URLString]];
        return data;
    }
    return nil;
}
然后使用此选项获取图像:

-(void)imageFromBase64EncodedString{

    NSString *string = @"";  // replace with encocded string
    NSData *imageData = [self dataFromBase64EncodedString:string];
    UIImage *myImage = [UIImage imageWithData:imageData];

    // do something with image
}
您可以使用的第二种方法:

您可以从下载类文件

然后导入NSData+Base64.h

这是你的密码

NSData *data = [[NSData alloc] initWithData:[NSData dataWithBase64EncodedString:strData]];
现在可以转换为UIImage

UIImage *image = [UIImage imageWithData:data];

您是否检查了您的数据是否为空?您是否使用您试图访问的服务进行了身份验证?如果将url放在浏览器中会发生什么情况。从url获取数据,使用base64对其进行解码。使用解码后的数据创建UIImage。当我在浏览器中打开url时,它工作正常。所以数据不是空的。从这个链接获取图像不需要进行身份验证。是的,它工作正常。删除前一个应用程序后,我已在模拟器中重新安装该应用程序