【发布时间】:2014-01-04 19:14:18
【问题描述】:
我正在为我的一个应用程序屏幕创建模糊图像,为此我使用以下代码
UIGraphicsBeginImageContext(self.view.bounds.size);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
CIContext *context = [CIContext contextWithOptions:nil];
CIImage *inputImage = [CIImage imageWithCGImage:image.CGImage];
CIFilter *filter = [CIFilter filterWithName:@"CIGaussianBlur"];
[filter setValue:inputImage forKey:kCIInputImageKey];
[filter setValue:[NSNumber numberWithFloat:5] forKey:@"inputRadius"];
CIImage *result = [filter valueForKey:kCIOutputImageKey];
CGImageRef cgImage = [context createCGImage:result fromRect:[inputImage extent]];
blurrImage = [UIImage imageWithCGImage:cgImage];
self.blurrImageView.image = blurrImage;
CGImageRelease(cgImage);
从上面的代码中我得到了正确的模糊图像,但问题出在这一行的CGImageRef cgImage = [context createCGImage:result fromRect:[inputImage extent]];。
到此行内存使用显示正常,但此行内存使用增加异常高,
hear 是执行前显示的内存使用截图。内存使用随着这个方法的执行而不断增加,这是之前的
这在执行CGImageRef cgImage = [context createCGImage:result fromRect:[inputImage extent]];行之后
这是常见的行为吗..?我搜索了答案,但我没有得到,所以任何人都面临同样的问题,请帮助我解决这个问题
一件事我“不使用 ARC”
【问题讨论】:
-
你的图片有多大?内存分析器是在设备还是模拟器上运行?
-
不多,但执行此方法后内存使用量有所增加
-
第二个 UIGraphicsGetImageFromCurrentImageContext() 是一个私有API,如果你想提交到AppStore,你的应用可能会被拒绝
-
正如您在屏幕截图中看到的,在执行这一行代码后,内存使用量几乎翻了一番,
-
有没有其他方法可以做到这一点...?
标签: ios iphone cgimageref cifilter uigraphicscontext