我有一个应用程序需要在base64编码的字符串中异步下载图像(服务器以Base64编码格式返回图像),我正在使用AsyncImage视图,但似乎AsyncImageView库只接受异步下载的url。 任何人都知道如何去做,如果我将立即下载所有图像然后我可以将该编码的字符串传递给
[self.imageView loadImageFromURL:[NSURL URLWithString:[EncodedString]]];
但这种情况没有意义,因为所有图像仍将在UIThread中下载。 请帮忙。 感谢.. !!
答案 0 :(得分:1)
你应该查看Cocoa Helpers - 它具有用于异步加载的SimpleHTTPLoader和完全符合您需要的ImageViewCached。你创建的不是imageView,而是ImageViewCached,只为它设置URL。它为你完成剩下的工作。
但如果你想按自己的方式去做:
我不保证下面的代码是正确的,但是整个想法是(我从工作代码中取出它并重写它以对应你的任务。我使用cocoa助手进行base64解码。你可以使用自己的方法。
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul);
dispatch_async(queue, ^{
NSString *query = [NSString stringWithFormat:@"site.example/image.jpg"];
NSString *data = [[[NSString alloc] initWithContentsOfURL:[NSURL URLWithString:query] encoding:NSUTF8StringEncoding error:nil] autorelease];
theImage = [UIImage imageWithData:(rfc::from_base64(data))]
dispatch_sync(dispatch_get_main_queue(), ^{
self.imageview.image = theImage;}
});
});
P.S。对于base64编码的图像,您必须修改ImageViewCached才能加载并解码图像。