gpt4 book ai didi

ios - UIImageView 加载图片很慢

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:55:50 26 4
gpt4 key购买 nike

我有一些代码可以从网页获取图像并将其显示在 ImageView 中。但是由于某种我不太明白的原因,图像加载速度非常慢!通过我的日志记录,我可以看到图像的所有数据(base64 字符串)都很快到达,但图像显示在 ImageView 中大约需要 12 - 15 秒。

我觉得这很奇怪,因为我使用 NSStream 以不同的方法获取图像数据,并在所有数据到达后立即加载图像。但是使用这种 URLSession 方法需要更长的时间来加载图像。这真的没有意义!此方法不应影响 ImageView 加载该数据的方式。

有人知道为什么会发生这种情况吗?

代码如下:

- (void)postMethod:(NSDictionary *)numDict
{
NSURL *url = [NSURL URLWithString:@"http://theWebAddress.com/aPage.php"]; // add url to page
NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration];
NSURLSession *session = [NSURLSession sessionWithConfiguration:config];

NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];
request.HTTPMethod = @"POST";


NSError *error = nil;
NSData *data = [NSJSONSerialization dataWithJSONObject:numDict options:kNilOptions error:&error];

NSLog(@"%@", numDict);

if (!error)
{
NSURLSessionUploadTask *uploadTask = [session uploadTaskWithRequest:request fromData:data completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {

NSDictionary *diction = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];


for (id key in diction)
{
if ([key isEqualToString:@"text"])
{
NSLog(@"data is text");

self.messageLabel.text = diction[@"text"];

break;
}
else if ([key isEqualToString:@"image"])
{
NSLog(@"data is an image");

// gets the base64 string pretty instantly but takes 12 - 15 seconds to pop up in the imageView

NSData *ImgData = [[NSData alloc] init];
ImgData = [[NSData alloc] initWithBase64EncodedString:diction[@"image"] options:1];

self.ImageView.image = [UIImage imageWithData:ImgData];

break;
}
}

}];

[uploadTask resume];
}
}

非常感谢!

最佳答案

您的完成处理程序可能在后台线程上运行。 UI 更新应该始终在主线程上进行。在

处设置一个断点
self.ImageView.image = [UIImage imageWithData:ImgData]; 

看看是不是在主线程上。如果没有,请在设置 ImageView.image 之前将其分派(dispatch)到主线程:

dispatch_async(dispatch_get_main_queue(), ^{
self.ImageView.image = [UIImage imageWithData:ImgData];
});

关于ios - UIImageView 加载图片很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25922935/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com