Я пытаюсь сохранить изображения в каталоге документов приложений. Хотя я легко могу сохранить изображения в каталоге, он занимает около двух секунд, чтобы сохранить изображение и его миниатюру. Для сохранения изображений с использованием очереди я использую следующие методы.Быстрый способ сохранения изображений в каталоге документов в iOS
+ (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 секунды на изображение - это много времени!
Вы можете сохранять изображения в фоновом потоке и оставлять основной поток для другого процесса. Также вы можете оптимизировать свой код путем вычисления каталога документов один раз и использовать его в будущем. – Midhere
Сделал это, но все-таки нашел время, чтобы сохранить изображения. Сохраняли строку каталога документов в userdefaults один раз и использовали ее полностью. Любые другие идеи? –
@SahilTyagi Вы пропустили основную идею, которую он вам дал. Используйте фоновые потоки и блоки для записи изображений. Между тем покажите пользователю счетчик. – NSNoob