zoukankan      html  css  js  c++  java
  • SSave ALAsset image to disk fast on iOS

    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.

  • 相关阅读:
    RunLoop学习总结
    单例模式探索
    HTTPS的学习总结
    Objective-C 链式编程思想
    iOS开发之计算动态cell的高度并缓存
    iOS开发之SDWebImage详解
    HDU 1211 RSA(快速幂)
    HDU 4965 Fast Matrix Calculation (矩阵快速幂)
    POJ 3233 Matrix Power Series(矩阵快速幂+二分求和)
    POJ 3518 (筛素数)
  • 原文地址:https://www.cnblogs.com/lingzhao/p/3658398.html
Copyright © 2011-2022 走看看