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

2021-08-12  本文已影响0人  taisheng2017

主要目的是为了记录

问题描述:使用 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];
上一篇下一篇

猜你喜欢

热点阅读