核心图像过滤器崩溃问题

Posted

技术标签:

【中文标题】核心图像过滤器崩溃问题【英文标题】:Core Image Filter Crash issue 【发布时间】:2015-03-25 05:38:54 【问题描述】:

我正在尝试为尺寸接近 5000*3000 的较大图像尺寸加载过滤器,这些图像尺寸是我从 Web Search 下载的。当为较大的图像尺寸应用这些过滤器时,应用程序崩溃并因此终止。以下是我目前用于预览过滤器的代码:

CIContext *context = [CIContext contextWithOptions:nil];
CIImage *outputImage = [filter.filter outputImage];
CGImageRef cgimg = [context createCGImage:outputImage fromRect:[outputImage extent]];
UIImage *displayImage = [UIImage imageWithCGImage:cgimg];

下面的代码行导致了这个问题,有人遇到过这个问题吗?

CGImageRef cgimg = [context createCGImage:outputImage fromRect:[outputImage extent]];

【问题讨论】:

【参考方案1】:

在这一行

CGImageRef cgimg = [context createCGImage:outputImage fromRect:[outputImage extent]];

您创建一个新的图像引用,然后从该引用创建一个新图像

尝试将此行添加到最后一行的下方

CGImageRelease(cgimg)

由于 ARC 没有自动释放这个引用,所以你必须手动释放这个引用,然后它会在你身边工作

代码:

CIContext *context = [CIContext contextWithOptions:nil];
CIImage *outputImage = [filter.filter outputImage];
CGImageRef cgimg = [context createCGImage:outputImage fromRect:[outputImage extent]];
UIImage *displayImage = [UIImage imageWithCGImage:cgimg];
CGImageRelease(cgimg);  // this line release the image reference

【讨论】:

我也用过,还是崩溃。对于更大尺寸的图像,它会崩溃。尺寸接近 5000*3000,你尝试过更大的图像尺寸吗?它仍然对我不起作用

以上是关于核心图像过滤器崩溃问题的主要内容,如果未能解决你的问题,请参考以下文章

iOS - 创建核心图像过滤器循环时保留原始图像

使用 Swift 为核心图像过滤器添加价值

可以应用哪些核心图像过滤器来改善文本文档的图像?

核心图像过滤器 iOS UISlider

核心图像:使用 CICrop 后,应用合成过滤器不对齐

核心图像过滤器 CISourceOverCompositing 未按预期显示与 alpha 叠加