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.

  • 相关阅读:
    Atcoder 1975 Iroha and Haiku
    训练指南 string easy
    心态回归
    Mysql问题处理
    Mysql-从库只读设置
    Redis5-集群搭建实验
    安装python3并新建python3的虚拟环境
    docker-部署zabbix4
    pt工具-mysql慢日志分析&优化
    Ansible:playbook-nagios
  • 原文地址:https://www.cnblogs.com/lingzhao/p/3658398.html
Copyright © 2011-2022 走看看