#import <CoreImage/CoreImage.h> // CoreImage.frameworkを追加
#pragma mark - 画像加工
- (void)ImageProcessing:(int)buttonIndex {
UIImage *orgImage = [aImageView image];
CIImage *ciImage = [[CIImage alloc] initWithCGImage:orgImage.CGImage];
CIFilter *ciFilter;
if ( buttonIndex == 0 ) { // モノクロ
ciFilter = [
CIFilter filterWithName:@"CIColorMonochrome" //フィルター名
keysAndValues:kCIInputImageKey, ciImage,
@"inputColor", [CIColor colorWithRed:0.75 green:0.75 blue:0.75], //パラメータ
@"inputIntensity", [NSNumber numberWithFloat:1.0], //パラメータ
nil
];
}else if ( buttonIndex == 1 ) { // セピア
ciFilter = [
CIFilter filterWithName:@"CISepiaTone" //フィルター名
keysAndValues:kCIInputImageKey, ciImage,
@"inputIntensity", [NSNumber numberWithFloat:0.8], //パラメータ
nil
];
}else if ( buttonIndex == 2 ) { // 反転
ciFilter = [
CIFilter filterWithName:@"CIColorInvert" //フィルター名
keysAndValues:kCIInputImageKey, ciImage,
nil
];
}else if ( buttonIndex == 3 ) { // 偽色
ciFilter = [
CIFilter filterWithName:@"CIFalseColor" //フィルター名
keysAndValues:kCIInputImageKey, ciImage,
@"inputColor0", [CIColor colorWithRed:0.44 green:0.5 blue:0.2 alpha:1], //パラメータ
@"inputColor1", [CIColor colorWithRed:1 green:0.92 blue:0.50 alpha:1], //パラメータ
nil
];
}else if ( buttonIndex == 4 ) { // 色調整
ciFilter = [
CIFilter filterWithName:@"CIColorControls" //フィルター名
keysAndValues:kCIInputImageKey, ciImage,
@"inputSaturation", [NSNumber numberWithFloat:1.0], //パラメータ
@"inputBrightness", [NSNumber numberWithFloat:0.5], //パラメータ
@"inputContrast", [NSNumber numberWithFloat:3.0], //パラメータ
nil
];
}else if ( buttonIndex == 5 ) { // トーンカーブ
ciFilter = [
CIFilter filterWithName:@"CIToneCurve" //フィルター名
keysAndValues:kCIInputImageKey, ciImage,
@"inputPoint0", [CIVector vectorWithX:0.0 Y:0.0], //パラメータ
@"inputPoint1", [CIVector vectorWithX:0.25 Y:0.1], //パラメータ
@"inputPoint2", [CIVector vectorWithX:0.5 Y:0.5], //パラメータ
@"inputPoint3", [CIVector vectorWithX:0.75 Y:0.9], //パラメータ
@"inputPoint4", [CIVector vectorWithX:1 Y:1], //パラメータ
nil
];
}else if ( buttonIndex == 6 ) { // ホワイトポイント調整
ciFilter = [
CIFilter filterWithName:@"CIWhitePointAdjust" //フィルター名
keysAndValues:kCIInputImageKey, ciImage,
@"inputColor", [CIColor colorWithRed:0.75 green:0.75 blue:0.75 alpha:1.00], //パラメータ
nil
];
}else if ( buttonIndex == 7 ) { // 色相調整
ciFilter = [
CIFilter filterWithName:@"CIHueAdjust" //フィルター名
keysAndValues:kCIInputImageKey, ciImage,
@"inputAngle",[NSNumber numberWithFloat:3.14], //パラメータ
nil
];
}else if ( buttonIndex == 8 ) { // オーバーレイブレンドモード
ciFilter = [
CIFilter filterWithName:@"CIOverlayBlendMode" //フィルター名
keysAndValues:kCIInputImageKey, ciImage,
@"inputBackgroundImage", [[CIImage alloc] initWithImage:[UIImage imageNamed:@"sample.png"]], //パラメータ
nil
];
} else { // キャンセル含めてそれ以外
}
CIContext *ciContext = [CIContext contextWithOptions:nil];
CGImageRef cgimg = [ciContext createCGImage:[ciFilter outputImage] fromRect:[[ciFilter outputImage] extent]];
UIImage* tmpImage = [UIImage imageWithCGImage:cgimg scale:1.0f orientation:UIImageOrientationUp];
CGImageRelease(cgimg);
[aImageView setImage:tmpImage];
}
最終更新:2012年09月19日 12:00