estoy usando ALAsset para recuperar imágenes como que:Cómo guardar la imagen de ALAsset en el disco rápidamente en iOS?
[[asset defaultRepresentation] fullResolutionImage]]
Este CGImageRef retorno que quiero guardar en el disco lo más rápido posible ...
Solución 1:
UIImage *currentImage = [UIImage imageWithCGImage:[[asset defaultRepresentation] fullResolutionImage]];
NSData *currentImageData = UIImagePNGRepresentation(currentImage);
[currentImageData writeToFile:filePath atomically:YES];
Solución 2:
CFURLRef url = (__bridge CFURLRef)[NSURL fileURLWithPath:filePath];
CGImageDestinationRef destination = CGImageDestinationCreateWithURL(url, kUTTypePNG, 1, NULL);
CGImageDestinationAddImage(destination, [[asset defaultRepresentation] fullResolutionImage], nil);
CGImageDestinationFinalize(destination);
El problema es que ambos métodos son muy lento rendimiento en un dispositivo. Tomo unos 2 segundos por imagen para realizar esto. Y esto es absolutamente demasiado.
Pregunta: ¿Cómo puedo acelerar el proceso de guardar esta imagen? ¿O tal vez hay una mejor solución para esto?
ACTUALIZACIÓN: Los mejores mejoras de rendimiento en ambas soluciones es guardar imágenes en formato JPEG en lugar de PNG. Por lo tanto, para la solución 1 se ha reemplazado UIImagePNGRepresentation
con UIImageJPEGRepresentation
. Para la solución 2 se ha reemplazado kUTTypePNG
con kUTTypeJPEG
.
También vale la pena señalar que la segunda solución es mucho más eficiente con la memoria que la primera.
Entiendo eso. Pero, ¿hay alguna otra manera más eficiente de hacer esto? No necesito PNG. En realidad, cualquier formato está bien. Solo necesito copiar la imagen original de ALAsset a mi carpeta personalizada ...? Gracias –
¿Has probado UIImageJPEGRepresentation? –
Acabo de intentar con la representación de JPEG, es aproximadamente la mitad más rápido que la representación PNG (todavía alrededor de 1 segundo). Esto es mucho mejor. Pero aún no es lo que esperaba. ¿Hay algo mas? ¿Qué pasa con la diferencia entre ambas soluciones que publiqué en cuestión? ¿Tiene alguna ventaja sobre otra? –