iOS 使用Image I/O 实现超大图片降采样

一个图片解码成未压缩的位图的时候,占用的内存和图片的文件大小没有关系,和图片的尺寸大小有关系,尺寸越大,所需要的像素点越多,所以超大图片,我们需要进行优化处理

这里直接上降采样代码

给UIImage 添加一个分类,在分类中添加一个方法 ,该size就是

UIImageView的大小

复制代码
- (UIImage *)resizeCG:(CGSize)size
{
    CGFloat maxPixelSize = MAX(size.width, size.height);
    CGImageSourceRef sourceRef = CGImageSourceCreateWithData((__bridge CFDataRef)UIImageJPEGRepresentation(self, 0.9), nil);
    NSDictionary *options = @{(__bridge id)kCGImageSourceCreateThumbnailFromImageAlways:(__bridge id)kCFBooleanTrue,
                              (__bridge id)kCGImageSourceThumbnailMaxPixelSize:[NSNumber numberWithFloat:maxPixelSize]
                              };
    CGImageRef imageRef = CGImageSourceCreateImageAtIndex(sourceRef, 0, (__bridge CFDictionaryRef)options);
    UIImage *newImage = [UIImage imageWithCGImage:imageRef scale:2 orientation:self.imageOrientation];
    CGImageRelease(imageRef);
    CFRelease(sourceRef);
    return newImage;
}
相关推荐
ZZH_AI项目交付6 小时前
扫脸功能交给 SDK 后,主工程里的旧代码怎么删除
ios·app·apple
ZZH_AI项目交付8 小时前
扫脸功能做成 SDK,为什么我没有把结果页和历史记录一起搬进去
ios·app
茶底世界之下8 小时前
诡异!String 参数在闭包里变成了 <uninitialized>,我排查了整整两天
ios·xcode·swift
harder32110 小时前
iOS IPA 马甲包送审风险评估工具
ios
SameX12 小时前
存钱 App 开发手记:restitution 0.3 是怎么试出来的,以及 86400 秒不等于一天
ios
MonkeyKing15 小时前
蓝蓝牙核心基础概念详解:2.4GHz频段、跳频、信道、广播、连接、配对
android·ios
鹤卿12315 小时前
Masonry
macos·ios·cocoa
JoyCong199816 小时前
开启iPad创造力!装上它平板能当电脑用
ios·电脑·ipad
WaywardOne1 天前
一.iOS Objective-C Runtime 原理
前端·ios