美文网首页
SDWebImage加载高分辨率图片内存暴涨问题

SDWebImage加载高分辨率图片内存暴涨问题

作者: 骑着蜗牛追流星 | 来源:发表于2021-11-11 19:11 被阅读0次

    目前使用的SDWebImage版本为4.3.3 ,其他版本自测~

    SDWebImageImageIOCoder.m

    // 添加方法

    -(UIImage *)compressImageWith:(NSData *)imageDD
    {
        UIImage *image = [UIImage imageWithData:imageDD];
        float imageWidth = image.size.width;
        float imageHeight = image.size.height;
    //这里的width看自己需求,如果嫌图片模糊就加大点,我这里屏幕宽度*2.5刚好达到需求
        float width = [UIScreen mainScreen].bounds.size.width * 2.5; 
        if (imageWidth < width) {
            width = imageWidth;
        }
        float height = image.size.height/(image.size.width/width);
        
        float widthScale = imageWidth /width;
        float heightScale = imageHeight /height;
        
        // 创建一个bitmap的context
        // 并把它设置成为当前正在使用的context
        UIGraphicsBeginImageContext(CGSizeMake(width, height));
        
        if (widthScale > heightScale) {
            [image drawInRect:CGRectMake(0, 0, imageWidth /heightScale , height)];
        }
        else {
            [image drawInRect:CGRectMake(0, 0, width , imageHeight /widthScale)];
        }
        
        // 从当前context中创建一个改变大小后的图片
        UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
        // 使当前的context出堆栈
        UIGraphicsEndImageContext();
        
        return newImage;
        
    }
    

    修改 - (UIImage *)decodedImageWithData:(NSData *)data 方法

    - (UIImage *)decodedImageWithData:(NSData *)data {
        if (!data) {
            return nil;
        }
        
        //UIImage *image = [[UIImage alloc] initWithData:data];
        UIImage *image = [self compressImageWith:data];
        
    #if SD_MAC
        return image;
    #else
        if (!image) {
            return nil;
        }
        
        UIImageOrientation orientation = [[self class] sd_imageOrientationFromImageData:data];
        if (orientation != UIImageOrientationUp) {
            image = [[UIImage alloc] initWithCGImage:image.CGImage scale:image.scale orientation:orientation];
        }
        
        return image;
    #endif
    }
    
    

    相关文章

      网友评论

          本文标题:SDWebImage加载高分辨率图片内存暴涨问题

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