美文网首页
UIimage 内存占用问题

UIimage 内存占用问题

作者: changeWong | 来源:发表于2017-03-08 10:40 被阅读384次

我们平时可能在写代码的时候,并没有在意UIimage对内存的占用问题。
最近我在做项目的时候,需要对多个图片进行压缩处理,发现处理后内存并没有马上得到释放。然后在网上找到了一种方法,就是写在@autoreleasepool里面。代码如下:

[imageArr enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
        NSDictionary *dic = obj;
        @autoreleasepool {
            
            NSString *fbigPath = [dic[@"fbigpath"] lastPathComponent];
            NSString * fsmallPath = [dic[@"fsmallpath"] lastPathComponent];
            
            UIImage *bigImage = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:dic[@"fbigpath"]]]];
            [[FileManager shareFileManager] writeBig:UIImageJPEGRepresentation(bigImage, 1.0) andWithPath:fbigPath];
            
            //压缩大图
            NSData * tempData = UIImageJPEGRepresentation(bigImage, 1.0);
            UIImage * smallimage;
            UIImage * ComImage;
            
            if ((float)([tempData length] / 1000.0 / 1000.0) >= 0.05) {
                
                smallimage = [self imageCompressForWidth:bigImage targetWidth:300];
                ComImage = smallimage;
                NSData * reduceData = UIImageJPEGRepresentation(smallimage, 0.35);
                
                while ((float)([reduceData length] / 1000.0 / 1000.0) >= 0.05) {
                    
                    NSData * data = [NSData dataWithData:reduceData];
                    ComImage = [UIImage imageWithData:data];
                    [ComImage imageByResizeToSize:CGSizeMake(ComImage.size.width * 0.6, ComImage.size.height * 0.6)];
                    reduceData = UIImageJPEGRepresentation(ComImage, 1.0);
                }
            } else {
                ComImage = bigImage;
            }

            [[FileManager shareFileManager] writeSmall:UIImageJPEGRepresentation(ComImage, 1.0) andWithPath:fsmallPath];
            
            ComImage = nil;
            smallimage = nil;
            bigImage = nil;
        }
    }];

在for循环里面,每次对image处理都放在autoreleasepool里面,然后在处理完后系统就会马上释放掉内存。

相关文章

  • UIimage 内存占用问题

    我们平时可能在写代码的时候,并没有在意UIimage对内存的占用问题。最近我在做项目的时候,需要对多个图片进行压缩...

  • 图片加载 内存优化

    图片加载内存优化 UIImage内存占用大小:image.size.width * image.size.heig...

  • UIImage 占用内存大小

    1、查看 AFNetworking 代码,里面的估算方法是 2、查看 CGImage 类,发现下面的方法:CGIm...

  • ios OC 图片压缩

    OC 版本(任意大小压缩) pragma mark - 修改图片大小,减小内存占用-(UIImage *)sca...

  • 在iOS中高效的加载图片

    在iOS开发中,图片(UIImage)是我们在开发中,占用手机内存比较大的对象,如果在运行过程中,内存占用过大,对...

  • iOS性能优化-在iOS中高效的加载图片

    在iOS开发中,图片(UIImage)是我们在开发中,占用手机内存比较大的对象,如果在运行过程中,内存占用过大,对...

  • 如何得到UIImage的大小(KB)

    iOS 计算UIImage的占用内存大小: 注意: lenth/1000,不是1024,是1000!因为Mac和i...

  • iOS uiimage内存占用大小计算

    今天突然遇到一个问题,UI给了很多设计图。但感觉很占内存。所以就想计算一下具体需要占用多少内存。我们平时看到的pn...

  • docker mysql 占内存过多

    解决docker部署mysql后,mysql占用内存过多的问题 查看内存占用 docker stats 更改配置 ...

  • 图片内存占用问题

    测试数据 (测试文件格式为PNG) 结论 iOS图片加载到内存中,占用内存大小为图片宽度 * 图片高度 * 4。e...

网友评论

      本文标题:UIimage 内存占用问题

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