我尝试从网址获取图片并在ImageView中显示。图像以base64Encoded Data编码。我正在使用以下代码
UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:url scale:2.0];
[ImageView setImage: image];
任何人都可以提出其中的问题。
答案 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];