inputImage = nil:过滤的图片没有显示?

时间:2015-10-19 09:10:14

标签: ios core-image

在bitFountain的在线教程的帮助下,一直在开发图像过滤应用程序。用户应该能够选择他们添加到相册中的照片的图像,然后可以向照片添加过滤器或删除该图像。 我的删除图像功能运行正常,但添加过滤器无效。

我已将三个过滤器实例记录到控制台,因为它们由方法返回,但它返回为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 个答案:

答案 0 :(得分:1)

使用CIImage时会发生此问题。但是当你显示图像时,它包含零值。所以将你的CIImage转换为UIImage。

e.g。

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

 UIImage *imageDisplay = [UIImage imageWithCGImage:image];

对您有所帮助。