美文网首页
ios 对于超高分辨率(图片本身不大)的图片加载导致内存暴增的

ios 对于超高分辨率(图片本身不大)的图片加载导致内存暴增的

作者: 天上飞的狒狒 | 来源:发表于2019-07-08 15:45 被阅读0次
0f0a1d08e3a1b1e156dfc95ff62e32070.jpg

上面的图片是一个分辨率很高的图片图片本身只有1M左右但是分辨率很大。5472*3648,如果连续九张加载到UIImageView的时候导致内存暴增甚至会导致app因为memory的问题闪退。
如果直接使用SDwebImage加载的话,你会发现导致内存暴增

我的解决方法是:

            //子线程加载图片
            dispatch_async(dispatch_queue_create(0, 0), ^{

                UIImage *ima = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:[_picUrlArr objectAtIndex:i]]]]; //存放图片url图集_picUrlArr
                UIImage *newImage;
                if (ima.size.width > 1024) {  //分辨率大的则重绘,否则不重绘
                    //获取原图片宽高比
                    CGFloat sourceImageAspectRatio = ima.size.width/ima.size.height;
                    CGSize newSize = CGSizeMake(1024, 1024/sourceImageAspectRatio);
                    //重绘图片
                    UIGraphicsBeginImageContext(newSize);
                    [ima drawInRect:CGRectMake(0, 0, newSize.width,newSize.height)];
                    newImage = UIGraphicsGetImageFromCurrentImageContext();
                    UIGraphicsEndImageContext();
                } else {
                    newImage = ima;
                }
//主线程更新UI
                dispatch_async(dispatch_get_main_queue(), ^{
                    displayImgview.image = newImage;
                });
            });

记录,用于学习,如有错误请赐教。谢谢

相关文章

网友评论

      本文标题:ios 对于超高分辨率(图片本身不大)的图片加载导致内存暴增的

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