【问题标题】:iPhone base64 encode image asynchronous downloadiPhone base64编码图片异步下载
【发布时间】:2012-06-15 15:20:07
【问题描述】:

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

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

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

【问题讨论】:

    标签: iphone


    【解决方案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;}
        });
    });  
    

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

    【讨论】:

    • 感谢您的帮助。我无法正确理解此代码。但是这个队列有什么作用使它异步下载吗?
    • @AbhinandanSahgal 在 dispatch_async 中编写重型代码,在 dispatch_sync 中编写结果代码。它是在异步部分完成后实现的。在我的代码中,它用于将大部分数据发送到服务器。这是我的第一个项目之一,它可能是错误代码的示例(由于高优先级或其他原因),但是当我不使用它时 - 应用程序停止直到发送数据,这部分应用程序完美运行并且数据仍在发送中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多