gpt4 book ai didi

iphone - 如何在后台将图像从网站保存到 iphone 应用程序(并快速完成)?

转载 作者:行者123 更新时间:2023-11-28 22:46:18 25 4
gpt4 key购买 nike

我在一些论坛帖子上发现了关于将图像从网站保存到 iphone 应用程序的信息,我正在使用它,因为除了速度之外,一切都很好。

图片大约10KB,一张图片时下载速度还可以,但当有15-20张图片时下载速度很慢。

我知道一定有其他方法可以更快地下载图片,因为我的 iPhone 上有一些新闻应用程序,这个应用程序可以下载 15-20 篇文章,其中包含像我的图片(我说像我的,因为质量相同或更好)并且快了大约 5 秒(或更多)。

所以我的问题是;有没有另一种更快的方法可以将图片从网站下载到 iPhone 应用程序?

这是我的代码:

#define kBgQueue dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0) //1

#import "downloadImage.h"

@interface downloadImage ()

@end

@implementation downloadImage

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}



- (void)viewDidLoad
{
[super viewDidLoad];

NSString *imgUrl = @"http://somesite.com/someimage.jpg";

dispatch_async(kBgQueue, ^{

[self performSelectorOnMainThread:@selector(downloadImageFromWeb:) withObject:imgUrl waitUntilDone:YES];

});

}

-(void)downloadImageFromWeb:(NSString *)imgUrl{


UIImage *image = [[UIImage alloc] initWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:imgUrl]]];

NSArray *parts = [imgUrl componentsSeparatedByString:@"/"];

NSString *imgFilename = [parts lastObject];

[self saveImage:image:imgFilename];

}


- (void)saveImage:(UIImage*)image:(NSString*)imageName {

NSData *imageData = UIImageJPEGRepresentation(image, 100);
NSFileManager *fileManager = [NSFileManager defaultManager];

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];

NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:
imageName];

[fileManager createFileAtPath:fullPath contents:imageData attributes:nil];

//NSLog(@"image saved");

}

- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}

@end

最佳答案

1) 从普通浏览器检查这张图片的实际加载时间,这可能是服务器端的问题

2) 尝试为此使用一些经过验证的代码,例如 AsyncImageView看看和你的有什么不同。

3) 删除保存并再次测试。如果它运行得更快,则使用子线程进行保存(但是,创建这么多线程并不是一个好主意)

4) 为什么要在主线程上执行负载选择器?在后台线程上执行,然后在主线程上更新图像。您现在分派(dispatch)它的方式会阻塞主线程。

关于iphone - 如何在后台将图像从网站保存到 iphone 应用程序(并快速完成)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13138337/

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