Как быстро сохранить изображение ALAsset на диск на iOS?

Я использую ALAsset для получения таких изображений:

[[asset defaultRepresentation] fullResolutionImage]]

Это возвращает CGImageRef, который я хочу сохранить на диск как можно быстрее ...

Решение 1:

UIImage *currentImage = [UIImage imageWithCGImage:[[asset defaultRepresentation] fullResolutionImage]];
NSData *currentImageData = UIImagePNGRepresentation(currentImage);
[currentImageData writeToFile:filePath atomically:YES];

] Решение 2:

CFURLRef url = (__bridge CFURLRef)[NSURL fileURLWithPath:filePath];
CGImageDestinationRef destination = CGImageDestinationCreateWithURL(url, kUTTypePNG, 1, NULL);
CGImageDestinationAddImage(destination, [[asset defaultRepresentation] fullResolutionImage], nil);
CGImageDestinationFinalize(destination);

Проблема в том, что оба метода очень медленно работают на устройстве. На это у меня уходит около 2 секунд на изображение. И это абсолютно надолго.

Вопрос: Как я могу ускорить процесс сохранения изображения? Или, может быть, есть лучшее решение для этого?

ОБНОВЛЕНИЕ: Лучшее улучшение производительности в обоих решениях - сохранение изображений в формате JPEG вместо PNG. Поэтому для решения 1 заменили UIImagePNGRepresentation на UIImageJPEGRepresentation . Для решения 2 замените kUTTypePNG на kUTTypeJPEG .

Также стоит отметить, что второе решение намного эффективнее с точки зрения памяти, чем первое.

7
задан Borut Tomazin 13 February 2012 в 14:02
поделиться