在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;
}
答案 0 :(得分:1)
使用CIImage时会发生此问题。但是当你显示图像时,它包含零值。所以将你的CIImage转换为UIImage。
e.g。
CGImageRef image = [generator copyCGImageAtTime:time actualTime:&actualTime error:&err];
UIImage *imageDisplay = [UIImage imageWithCGImage:image];
对您有所帮助。