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.

  • 相关阅读:
    WPF关于“在“System.Windows.Markup.StaticResourceHolder”上提供值时引发了异常。”问题解决办法
    未知的生成错误 因为没有预加载,所以无法解析程序集 GalaSoft.MvvmLight
    C#中的??是什么意思
    WIN10使用管理员权限运行VS2013
    路飞项目
    DRF
    Vue
    dsdffd
    python学习第45天
    python学习第44天
  • 原文地址:https://www.cnblogs.com/lingzhao/p/3658398.html
Copyright © 2011-2022 走看看