【问题标题】:Quicker way to save images to documents directory in iOS在 iOS 中将图像保存到文档目录的更快方法
【发布时间】: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


【解决方案1】:

您不需要每次都查找文档目录。只需找出一次并存储它。并在线程中运行您的代码,线程会将图像保存在后台。

【讨论】:

    猜你喜欢
    • 2015-12-05
    • 1970-01-01
    • 1970-01-01
    • 2016-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多