2015-10-19 81 views
0

在bitFountain的在线教程的帮助下,一直在开发图像过滤应用程序。用户应该能够选择已添加到相册的照片的图像,然后可以将照片添加到照片或删除该图像。 我的删除图像功能运行正常,但添加过滤器不起作用。inputImage = nil:过滤的图像不显示?

我已将三个过滤器实例记录到控制台,因为它们是由方法返回的,但它作为inputImage = nil返回。

2015-10-19 10:41:53.634 FilterApp[78451:28732768] <CISepiaTone: inputImage=nil inputIntensity=1> 
2015-10-19 10:41:53.634 FilterApp[78451:28732768] <CIGaussianBlur: inputImage=nil inputRadius=1> 
2015-10-19 10:41:53.635 FilterApp[78451:28732768] <CIColorClamp: inputImage=nil inputMinComponents=[0.2 0.2 0.2 0.2] inputMaxComponents=[0.9 0.9 0.9 0.9]> 

inputImage = nil是什么意思?

我不确定代码可能出错的地方,或者如果这个问题甚至是代码外部的。 (使用Xcode7和iPhone 4s模拟器。)

编辑:这是用于转换为UIImage的代码。

- (UIImage *)filteredImageFromImage:(UIImage *)image andFilter:(CIFilter *)filter 

{ 

    CIImage *unfilteredImage = [[CIImage alloc] initWithCGImage:image.CGImage]; 

    [filter setValue:unfilteredImage forKey:kCIInputImageKey]; 

    CIImage *filteredImage = [filter outputImage]; 

    CGRect extent = [filteredImage extent]; 

    CGImageRef cgImage = [self.context createCGImage:filteredImage fromRect:extent]; 

    UIImage *finalImage = [UIImage imageWithCGImage:cgImage]; 

    return finalImage; 

} 

回答

1

当您使用CIImage时会出现此问题。但是当你显示图像时,它包含零值。所以转换你的CIImage到UIImage。

例如

CGImageRef image = [generator copyCGImageAtTime:time actualTime:&actualTime error:&err]; 

UIImage *imageDisplay = [UIImage imageWithCGImage:image]; 

您可能对它有帮助。

+0

可以请你上传完整的例子??我无法理解你的答案。 –

+0

我其实已经在代码中已经按照教程中的内容。我将更新我的问题以显示整个代码(对不起,应该在开始时添加这个代码)。 – hinterbu