Skip to content

Instantly share code, notes, and snippets.

@rs
Created April 17, 2013 01:11
Show Gist options
  • Save rs/5401003 to your computer and use it in GitHub Desktop.
Save rs/5401003 to your computer and use it in GitHub Desktop.
if (!compositeToneCurve)
{
compositeToneCurve = [CIFilter filterWithName:@"CIToneCurve" keysAndValues:
@"inputPoint0", [CIVector vectorWithX:0.0f Y:0.0f],
@"inputPoint1", [CIVector vectorWithX:0.184f Y:0.078f],
@"inputPoint2", [CIVector vectorWithX:0.427f Y:0.403f],
@"inputPoint3", [CIVector vectorWithX:0.741f Y:0.850f],
@"inputPoint4", [CIVector vectorWithX:1.0f Y:1.0f],
nil];
}
[compositeToneCurve setValue:self.inputImage forKey:kCIInputImageKey];
if (!colorMatrix)
{
colorMatrix = [CIFilter filterWithName:@"CIColorMatrix" keysAndValues:
@"inputRVector", [CIVector vectorWithX:1 Y:0 Z:0 W:0],
@"inputGVector", [CIVector vectorWithX:0 Y:0 Z:0 W:0],
@"inputBVector", [CIVector vectorWithX:0 Y:0 Z:0 W:0],
@"inputBiasVector", [CIVector vectorWithX:0 Y:1 Z:1 W:0],
nil];
}
// [colorMatrix setValue:compositeToneCurve.outputImage forKey:kCIInputImageKey];
[colorMatrix setValue:self.inputImage forKey:kCIInputImageKey];
CIFilter *mask = [CIFilter filterWithName:@"CIMinimumComponent" keysAndValues:kCIInputImageKey, colorMatrix.outputImage, nil];
CIFilter *correction = [CIFilter filterWithName:@"CIColorMatrix" keysAndValues:
kCIInputImageKey, self.inputImage,
@"inputRVector", [CIVector vectorWithX:1 Y:0 Z:0 W:0],
@"inputGVector", [CIVector vectorWithX:0 Y:.5 Z:0 W:0],
@"inputBVector", [CIVector vectorWithX:0 Y:0 Z:.5 W:0],
@"inputBiasVector", [CIVector vectorWithX:0 Y:1 Z:1 W:0],
nil];
CIFilter *multiplyComposite = [CIFilter filterWithName:@"CIBlendWithMask" keysAndValues:
kCIInputImageKey, correction.outputImage,
kCIInputBackgroundImageKey, self.inputImage,
@"inputMaskImage", mask.outputImage,
nil];
return multiplyComposite.outputImage;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment