从iOS中的url获取图像

时间:2014-04-14 12:55:41

标签: ios uiimage base64

我尝试从网址获取图片并在ImageView中显示。图像以base64Encoded Data编码。我正在使用以下代码

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

[ImageView setImage: image];

任何人都可以提出其中的问题。

3 个答案:

答案 0 :(得分:0)

一个很大的可能性是dataWithContentsOfURL因任何原因失败了。您应该使用dataWithContentsOfURL:options:error:代替并执行一些错误处理。

修改

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

答案 1 :(得分:0)

可能无法使用,因为您必须登录以查看代码段中引用的网址中的图片。
如果我尝试从URL查看图像,它会告诉我登录。

答案 2 :(得分:0)

尝试这两种方法。他们都来自这里:how to decode BASE64 encoded PNG using Objective C

您可以使用以下方法将其解码为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
}

您可以使用的第二种方法:

您可以从http://projectswithlove.com/projects/NSData_Base64.zip

下载课程文件

然后#import "NSData+Base64.h"

把这是你的代码

NSData *data = [[NSData alloc] initWithData:[NSData dataWithBase64EncodedString:strData]];

您现在可以转换为UIImage

UIImage *image = [UIImage imageWithData:data];