美文网首页
iOS加载超清大图,大尺寸,高分辨率的图片内存暴涨且不释放的问题

iOS加载超清大图,大尺寸,高分辨率的图片内存暴涨且不释放的问题

作者: taisheng2017 | 来源:发表于2021-08-12 10:09 被阅读0次

    主要目的是为了记录

    问题描述:使用 UIImage *image = [UIImage imageNamed:@"阿拉伯风格曲.png"]; [_staffImageView setImage:image]; 造成内存暴增,且退出当前界面,也调用了 dealloc 方法,但就是内存不释放。图片 "阿拉伯风格曲.png " 大小只有668Kb,但是尺寸 是1160X11900.

    内存暴增问题的解决:

    重新绘制图片,代码如下,就解决了内存暴增的问题。

    + (UIImage *)scaleGraphicsImage:(UIImage *)image{
     UIImage *newImage;
     if (image.size.width > 1024) { //分辨率大的则重绘,否则不重绘
         //获取原图片宽高比
         CGFloat sourceImageAspectRatio = image.size.width/image.size.height;
         CGSize newSize = CGSizeMake(1024, 1024/sourceImageAspectRatio);
         //重绘图片
         UIGraphicsBeginImageContext(newSize);
         [image drawInRect:CGRectMake(0, 0, newSize.width,newSize.height)];
         newImage = UIGraphicsGetImageFromCurrentImageContext();
         UIGraphicsEndImageContext();
     } else {
         newImage = image;
     }
     return newImage;
    }
    
    

    内存不释放问题的解决:

       使用  UIImage *image =  [UIImage imageNamed:@"阿拉伯风格曲.png"];   imageNamed 方法加载图片 图片内存是一直 在内存中的。
      所以要更换加载图片的方式:如下
    
         UIImage *image =  [[UIImage alloc] initWithContentsOfFile:thePath];
    

    相关文章

      网友评论

          本文标题:iOS加载超清大图,大尺寸,高分辨率的图片内存暴涨且不释放的问题

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