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.

  • 相关阅读:
    pickle模块使用
    Graphviz安装教程
    Redis常用命令
    MongoDB和Redis的区别
    UVA-1572
    poj2352
    poj1195
    Codeforces Round #430 (Div. 2)
    Codeforces Round #431 (Div. 2) B. Tell Your World
    poj3278 【BFS】
  • 原文地址:https://www.cnblogs.com/lingzhao/p/3658398.html
Copyright © 2011-2022 走看看