SDWebImage 加载gif动图崩溃:Message from debugger: Terminated due to memory issue

使用SDWebImage加载大尺寸GIF图片时,可能导致因内存问题而崩溃。问题在于`UIImage`从数据中创建时占用过大内存。解决办法是在`UIImage+MultiFormat`中增加图片等比压缩的方法,并在加载时应用该压缩,以避免内存飙升。参考链接提供了更多关于SDWebImage加载GIF和性能问题的解决方案。
摘要由CSDN通过智能技术生成

SDWebImage

加载Gif图片过大,导致内存飙升最终程序崩溃,报错:

Message from debugger: Terminated due to memory issue

 

我发现这里

UIImage*image = [UIImagesd_imageWithData:data];

图片取出来的时候就已经巨大无比,占用了很大的内存,导致内存来不及释放就崩溃。

发现这里面对图片的处理是直接按照原大小进行的,如果几千是分辨率这里导致占用了大量内存。

所以我们需要在这里对图片做一次等比的压缩。

更改源码:

1、在UIImage+MultiFormat 中增加方法,对图片做一次等比的压缩。

+(UIImage*)compressImageWith:(UIImage*)image{
    float imageWidth = image.size.width;
    float imageHeight = image.size.height;
    float width =640;
    float height = image.size.height/(image.size.width/width);
    float widthScale = imageWidth /width;
    float heightScale = imageHeight /height;
    // 创建一个bitmap的context
    // 并把它设置成为当前正在使用的conte
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值