【发布时间】:2013-12-12 10:21:34
【问题描述】:
我正在尝试将图像保存到我的应用程序文档目录。虽然我可以轻松地将图像保存到目录中,但保存图像及其缩略图大约需要两秒钟。我正在使用以下方法使用队列保存图像。
+ (void)saveImage:(UIImage*)imageToSave withName:(NSString*)imageName toFolder:(NSString*)folderName
{
[Utils createFolderWithPath:folderName];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *savedImagePath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@/%@.png",folderName,imageName]];
NSData *imageData = UIImagePNGRepresentation(imageToSave);
[imageData writeToFile:savedImagePath atomically:NO];
}
+ (void)createFolderWithPath:(NSString *)folderPath
{
NSError *error = nil;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:folderPath];
if (![[NSFileManager defaultManager] fileExistsAtPath:filePath])
{
[[NSFileManager defaultManager] createDirectoryAtPath:filePath withIntermediateDirectories:NO attributes:nil error:&error];
}
}
有没有更快的方法?因为我必须保存多张图片,每张图片 2 秒是很多时间!
【问题讨论】:
-
您可以将图像保存在后台线程中,并将主线程留给其他进程。您还可以通过计算文档目录一次并使用它来优化您的代码。
-
做了这件事,但保存图像仍然需要时间。将文档目录字符串保存在 userdefaults 中一次并全部使用。还有其他想法吗?
-
@SahilTyagi 你错过了他给你的主要想法。使用后台线程和块来写入图像。同时,向用户显示一个微调器。
标签: ios iphone nsdocumentdirectory