ios 图片加载内存尺寸_ios 对于超高分辨率(图片本身不大)的图片加载导致内存暴增的处理方法...

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;

});

});

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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值