1

我有一个应用程序需要以 base64 编码字符串异步下载图像(服务器以 Base64 编码格式返回图像),我正在使用 AsyncImage 视图,但似乎 AsyncImageView 库只接受 url 异步下载。任何知道如何解决这个问题的人,如果我将一次下载所有图像然后我可以将该编码字符串传递给

   [self.imageView loadImageFromURL:[NSURL URLWithString:[EncodedString]]];

但这没有意义,因为所有图像仍将在 UIThread 中下载。请帮忙。谢谢..!!

4

1 回答 1

1

应该查看Cocoa Helpers - 它具有用于异步加载的 SimpleHTTPLoader 和完全满足您需要的 ImageViewCached。您创建的不是 imageView,而是 ImageViewCached,只需为其设置 URL。它会为您完成其余的工作。

但是,如果您想按照自己的方式进行操作:

我不保证下面的代码是正确的,但整个想法是(我从工作代码中获取并重写它以对应您的任务。我使用可可助手进行 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;}
    });
});  

PS 对于 base64 编码的图像,您必须修改 ImageViewCached 才能加载和解码图像。

于 2012-06-15T15:36:12.977 回答