ios - CIImage内存泄漏

标签 ios objective-c memory-leaks ciimage

我正在使用以下方法模糊一些图像。使用仪器 CIImage 正在泄漏。我尝试将它们包装在 @autoreleasepool 中,但没有成功。有什么想法吗?

-(UIImage *)blurImage:(UIImage *)image withStrength:(float)strength
{
    @autoreleasepool {
        CIContext *context = [CIContext contextWithOptions:nil];
        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)];
        CGRect extent = [cropped extent];
        CGImageRef cgImage = [context createCGImage:cropped fromRect:extent];
        UIImage *returnImage = [UIImage imageWithCGImage:cgImage].copy;

        CGImageRelease(cgImage);

        return returnImage;
    }

}

最佳答案

我看到了与分析代码时看到的相同的泄漏。试试这个,这似乎可以避免泄漏并给你相同的结果:

- (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];
    }
}

关于ios - CIImage内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22131595/

相关文章:

c# - 如何从日期选择器后端检索格式化版本的日期

ios - RxSwift 验证按钮颜色设置不正确

ruby-on-rails - 如何追踪 Rails 应用程序中的内存泄漏?

javascript - Jquery/Javascript 内存泄漏

ios - 当我上下滚动 UICollectionView 时, View 高度约束设置不正确

ios - while 循环内随机改变的本地整数值

ios - Objective C 中c 文件的共享实例?

objective-c - 从服务器获取数据时的进度条

ios - 根据调整大小的 UIImage 变换线点

c - 尽管内存已被释放,Valgrind 仍检测到内存泄漏