IOS CoreImage dynamic rendering (filter)
//
// ViewController. m
// CoreImageOfDong
//
// Created by Dong on 15/6/30.
// Copyright (c) 2015 xindong. All rights reserved.
//
# Import ViewController. h
# Import // Import this database
@ Interface ViewController ()
@ Property (nonatomic, strong) GLKView * glkView; // buffer view for rendering (similar to streaming media, real-time change)
@ Property (nonatomic, strong) CIFilter * filter;
@ Property (nonatomic, strong) CIImage * ciImage;
@ Property (nonatomic, strong) CIContext * ciContext;
@ End
@ Implementation ViewController
-(Void) viewDidLoad {
[Super viewDidLoad];
UIImage * showImage = [UIImage imageNamed: @demo1.jpg];
CGRect rect = CGRectMake (0, 0, showImage. size. width, showImage. size. height );
// Obtain the context of OpenGLES Rendering
EAGLContext * eagContext = [[EAGLContext alloc] initWithAPI: kEAGLRenderingAPIOpenGLES2];
// Create the rendered buffer
Self. glkView = [[GLKView alloc] initWithFrame: rect context: eagContext];
[Self. glkView bindDrawable]; // bind the drawing; otherwise, the screen is black at the beginning.
[Self. view addSubview: self. glkView];
// Create the context for CoreImage
Self. ciContext = [CIContext contextWithEAGLContext: eagContext options :@{ kCIContextWorkingColorSpace: [NSNull null]}];
// CoreImage settings
Self. ciImage = [[CIImage alloc] initWithImage: showImage];
Self. filter = [CIFilter filterWithName: @ CISepiaTone];
[Self. filter setValue: self. ciImage forKey: kCIInputImageKey];
[Self. filter setValue: @ (0) forKey: kCIInputIntensityKey];
// Start Rendering
[Self. ciContext drawImage: [self. filter valueForKey: kCIOutputImageKey] inRect: CGRectMake (0, 0, self. glkView. drawableWidth, self. glkView. drawableHeight) fromRect: [self. ciImage extent];
[Self. glkView display];
// Dynamic Rendering
UISlider * slider = [[UISlider alloc] initWithFrame: CGRectMake (30,500,200, 10)];
Slider. minimumValue = 0.f;
Slider. maximumValue = 10.f;
[Slider addTarget: self action: @ selector (changeColorValue :) forControlEvents: UIControlEventValueChanged];
[Self. view addSubview: slider];
}
-(Void) changeColorValue :( UISlider *) slider
{
[Self. filter setValue: self. ciImage forKey: kCIInputImageKey];
[Self. filter setValue: @ (slider. value) forKey: kCIInputIntensityKey];
// Start Rendering
[Self. ciContext drawImage: [self. filter valueForKey: kCIOutputImageKey] inRect: CGRectMake (0, 0, self. glkView. drawableWidth, self. glkView. drawableHeight) fromRect: [self. ciImage extent];
[Self. glkView display];
}