アットウィキロゴ

CoreImage

#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
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。