美文网首页iOS精选
UIImage 转 NSData调研

UIImage 转 NSData调研

作者: 愤怒小鸟飞呀飞 | 来源:发表于2019-09-26 11:57 被阅读0次

    一、转换方法介绍

    目前系统提供的方法中,有两种UIImage对象转NSData对象的方法
    第一种

    - (NSData *)rawData1:(UIImage *)image{
        NSData *data = UIImageJPEGRepresentation(image, 1.0);
        return data;
    }
    

    第二种

    /**
     使用imageIO中的api生成data
     */
    - (NSData *)rawData2:(UIImage *)image{
        NSDictionary *options = @{(__bridge NSString *)kCGImageSourceShouldCache : @NO,
                                  (__bridge NSString *)kCGImageSourceShouldCacheImmediately : @NO
                                  };
        NSMutableData *data = [NSMutableData data];
        CGImageDestinationRef destRef = CGImageDestinationCreateWithData((__bridge CFMutableDataRef)data, kUTTypeJPEG, 1, (__bridge CFDictionaryRef)options);
        CGImageDestinationAddImage(destRef, image.CGImage, (__bridge CFDictionaryRef)options);
        CGImageDestinationFinalize(destRef);
        CFRelease(destRef);
        return data;
    }
    
    

    二、转换方法性能对比

    1、内存耗费

    image.png

    方式一、内存消耗峰值为12.87MiB
    方式二、内存消耗峰值为7.49MiB

    2、转换后data相比原物理data大小

    image.png

    如图所示 第一种方法会导致图片物理大小变大很多
    第二种方法会导致图片物理内存变小

    时间
    image.png
    图片bitmap
     方式一、方式二取出data 数据 在转换 为 image ,bitMap值不变
    

    data image 互转 2次

    相似
    

    三、结论

    综上所述,imageIO 原理的第二种方式 在性能 和结果上都要优于 第一种方式

    四、项目应用后效果

    参考链接:图片处理:Image I/O 学习笔记
    https://www.jianshu.com/p/4dcd6e4bdbf0

    相关文章

      网友评论

        本文标题:UIImage 转 NSData调研

        本文链接:https://www.haomeiwen.com/subject/ahwguctx.html