如何使用CIFilter进行实时图像处理?

时间:2014-11-10 15:08:32

标签: ios objective-c iphone xcode core-image

我在我的iOS应用程序中使用CIFilter进行图像过滤。我的下面的代码工作顺利。但我有一个问题,我认为处理图像是时间(我无法获得实时效果)。如何解决这个问题问题?

cameraImgView.image = [ImageProcessing sepian:myOriginalImage withInensity:0.5]; //method call     

方法定义

+(UIImage*)sepian:(UIImage*)img withInensity:(float)intensity{

CIImage *cimage = [[CIImage alloc] initWithImage:img];

CIFilter *sepiaFilter = [CIFilter filterWithName:@"CISepiaTone"];
[sepiaFilter setDefaults];
[sepiaFilter setValue:cimage forKey:@"inputImage"];
[sepiaFilter setValue:[NSNumber numberWithFloat:intensity]
               forKey:@"inputIntensity"];

CIImage *outputImage = [sepiaFilter outputImage];
CIContext *context = [CIContext contextWithOptions:nil];
CGImageRef cgImage = [context createCGImage:
                      outputImage fromRect:[outputImage extent]];
UIImage *resultUIImage = [UIImage imageWithCGImage:cgImage];
   CGImageRelease(cgImage);
return resultUIImage;

}

1 个答案:

答案 0 :(得分:0)

试试这个:

filter = [CIFilter filterWithName:@"CISepiaTone"

                            keysAndValues: kCIInputImageKey, rawImageData,

                  @"inputIntensity", @3.5, nil];

如下所示提供此过滤器:

CIImage *filteredImageData = [filter valueForKey:@"outputImage"];

    UIImage *filteredImage = [UIImage imageWithCIImage:filteredImageData];

    self.img_view.image = filteredImage;