Wednesday 19 March 2014

Image Processing : Image Colour Changed

Image Processing : Image Colour Changed when Slider Value is Changed 

Framework :
  Core Image Framework added into Your project

New.h :
#import <UIKit/UIKit.h>
#import <CoreImage/CoreImage.h> 
@interface New : UIViewController
{
    UIImage *Imagesss;
    IBOutlet UIImageView *theImageView;
    IBOutlet UISlider *slider_hue;
}
@property (nonatomic, retain) IBOutlet UISlider *slider_hue;
@property (nonatomic, retain) IBOutlet UIImageView *theImageView;

-(IBAction)huechange:(id)sender;
-(IBAction)huevaluechange:(id)sender;
- (IBAction)original:(id)sender;

@end

New.m :
@synthesize theImageView, slider_hue;

- (void)viewDidLoad
{
    [super viewDidLoad];
    Imagesss = [UIImage imageNamed:@"hair.png"];
}

- (IBAction)original:(id)sender
{
    theImageView.image = [UIImage imageNamed:@"hair.png"];
}

//Method 1
-(IBAction)huevaluechange:(id)sender
{
    float f= slider_hue.value;
    
    UIImage *image = [self imageWithImage:Imagesss rotatedByHue:f];
    
    [theImageView setImage:image];
}

//Method 2
-(IBAction)huechange:(id)sender
{
    float f= slider_hue.value;
   
    UIImage *image = [self imageWithImage:[UIImage imageNamed:@"hair.png"] fixedHue:f alpha:1.0];

    [theImageView setImage:image];
}

//Method 1 - Function
- (UIImage*) imageWithImage:(UIImage*) source rotatedByHue:(CGFloat) deltaHueRadians;
{
    // Create a Core Image version of the image.
    CIImage *sourceCore = [CIImage imageWithCGImage:[source CGImage]];

    // Apply a CIHueAdjust filter
    CIFilter *hueAdjust = [CIFilter filterWithName:@"CIHueAdjust"];
    [hueAdjust setDefaults];
    [hueAdjust setValue: sourceCore forKey: @"inputImage"];
    [hueAdjust setValue: [NSNumber numberWithFloat: deltaHueRadians] forKey: @"inputAngle"];
    CIImage *resultCore = [hueAdjust valueForKey: @"outputImage"];
    
    // Convert the filter output back into a UIImage.
    // This section from http://stackoverflow.com/a/7797578/1318452
    CIContext *context = [CIContext contextWithOptions:nil];
    CGImageRef resultRef = [context createCGImage:resultCore fromRect:[resultCore extent]];
    UIImage *result = [UIImage imageWithCGImage:resultRef];
    CGImageRelease(resultRef);
    return result;
}

//Method 2 - Function
- (UIImage*) imageWithImage:(UIImage*) source fixedHue:(CGFloat) hue alpha:(CGFloat) alpha;
{
     // Note: the hue input ranges from 0.0 to 1.0, both red.  Values outside this range will be clamped to 0.0 or 1.0.

    // Find the image dimensions.
    CGSize imageSize = [source size];
    CGRect imageExtent = CGRectMake(0,0,imageSize.width,imageSize.height);
    
    // Create a context containing the image.
    UIGraphicsBeginImageContext(imageSize);
    CGContextRef context = UIGraphicsGetCurrentContext();
    [source drawAtPoint:CGPointMake(0,0)];
    
    // Draw the hue on top of the image.
    CGContextSetBlendMode(context, kCGBlendModeHue);
    [[UIColor colorWithHue:hue saturation:1.0 brightness:1.0 alpha:alpha] set];
    UIBezierPath *imagePath = [UIBezierPath bezierPathWithRect:imageExtent];
    [imagePath fill];
    
    // Retrieve the new image.
    UIImage *result = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return result;
}


New.xib :
//Method 1 - Slider Value
slider value is range from 0 to 6

//Method 2 - Slider Value
slider value is range from 0 to 1

Output :
App Start Page
Change the Slider Value


No comments: