如何在没有SoftwareRendered的情况下使用CIContext来渲染CIFilter以避免内存泄漏?

时间:2018-01-13 21:56:35

标签: ios memory-leaks core-image cifilter ciimage

我想要做的就是不使用软件渲染器来避免CIContext内存泄漏。因此我想用这个

CIContext *context = [CIContext contextWithOptions:@{kCIContextUseSoftwareRenderer: @NO}];

此链接https://forums.developer.apple.com/thread/17142描述了它用于缩放但不适用于应用CIFilter的用法。我该怎么做?任何帮助深表感谢。

我的代码作为示例

 __weak typeof(self) weakSelf = self;
@autoreleasepool{
    weakSelf.context =[CIContext contextWithOptions:@{kCIContextUseSoftwareRenderer:@NO}];
    weakSelf.myCIFilter =[CIFilter filterWithName:@"CIComicEffect"
                            withInputParameters:@{@"inputImage":weakSelf.myCIImage}];
    weakSelf.resultCIImage =[weakSelf.myCIFilter valueForKey:kCIOutputImageKey];
    weakSelf.croppingCIImage =[weakSelf.resultCIImage imageByCroppingToRect:CGRectMake(0,0, weakSelf.affineClampImage.size.width*scale, weakSelf.affineClampImage.size.height*scale)];
    weakSelf.myCGImage =[weakSelf.myCIContext createCGImage:weakSelf.croppingCIImage fromRect:[weakSelf.myCIImage extent]];
    UIImage * renderedImage = [UIImage imageWithCGImage:weakSelf.myCGImage];
}

0 个答案:

没有答案