CIImage memory leak

拥有回忆 提交于 2019-11-29 12:01:43

I see the same leak you're seeing when profiling the code. Try this instead which seems to avoid the leak and give you the same results:

- (UIImage*)blurImage:(UIImage*)image withStrength:(float)strength
{
    @autoreleasepool {
        CIImage* inputImage = [[CIImage alloc] initWithCGImage:image.CGImage];
        CIFilter* filter = [CIFilter filterWithName:@"CIGaussianBlur"];
        [filter setValue:inputImage forKey:@"inputImage"];
        [filter setValue:[NSNumber numberWithFloat:strength] forKey:@"inputRadius"];

        CIImage* result = [filter valueForKey:kCIOutputImageKey];
        float scale = [[UIScreen mainScreen] scale];
        CIImage* cropped = [result imageByCroppingToRect:CGRectMake(0, 0, image.size.width * scale, image.size.height * scale)];

        return [[UIImage alloc] initWithCIImage:cropped];
    }
}

did you try to put CIImages to nil ?

-(UIImage *)blurImage:(UIImage *)image withStrength:(float)strength
{      
       //your code
       CGImageRelease(cgImage);

       cropped=nil;
       result = nil;
       inputImage = nil;
       context = nil;

       return returnImage;
     }
 }
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!