CIImage memory leak

前端 未结 2 1980
暗喜
暗喜 2020-12-20 00:34

I\'m using the below method to blur some images. Using instruments the CIImage\'s are leaking. I tried wrapping them in an @autoreleasepool, but no luck. Any ideas?

2条回答
  •  野趣味
    野趣味 (楼主)
    2020-12-20 00: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];
        }
    }
    

提交回复
热议问题