I am using ALAsset to retrieve images like that:
[[asset defaultRepresentation] fullResolutionImage]]
This return CGImageRef which I want to save to disk as fast as possible...
Solution 1:
UIImage*currentImage =[UIImage imageWithCGImage:[[asset defaultRepresentation] fullResolutionImage]];
NSData*currentImageData =UIImagePNGRepresentation(currentImage);
[currentImageData writeToFile:filePath atomically:YES];
Solution 2:
CFURLRef url =(__bridge CFURLRef)[NSURL fileURLWithPath:filePath];
CGImageDestinationRef destination =CGImageDestinationCreateWithURL(url, kUTTypePNG,1, NULL);
CGImageDestinationAddImage(destination,[[asset defaultRepresentation] fullResolutionImage],nil);
CGImageDestinationFinalize(destination);
The problem is that both methods are very slow performing on a device. I takes about 2 seconds per image to perform this. And this is absolutely to long.
Question: How can I speed up this image saving process? Or perhaps is there a better solution for this?
UPDATE: The best performance improvements in both solutions
is to save images to JPEG format instead of PNG. So for solution 1 have replaced
UIImagePNGRepresentation
with
UIImageJPEGRepresentation
. For solution 2 have replaced
kUTTypePNG
with kUTTypeJPEG
.
Also worth noting that second solution is way more memory efficient that first one.
SSave ALAsset image to disk fast on iOS,布布扣,bubuko.com
SSave ALAsset image to disk fast on iOS
原文:http://www.cnblogs.com/lingzhao/p/3658398.html