【iPhone】GPUImageで複数のフィルターを同時に使用する方法
概要
GPUImageを使用して、複数のフィルターを同時に使用する方法。
今回は、Brightness、Saturation、Contrastフィルターを同時に使用する。
■GPUImage
https://github.com/BradLarson/GPUImage
方法
下記のように実装します。
UIImage *inputImage = [UIImage imageNamed:@"Lenna.bmp"]; //元画像 GPUImagePicture *imagePicture = [[GPUImagePicture alloc] initWithImage:inputImage]; // 明るさ // Brightness ranges from -1.0 to 1.0, with 0.0 as the normal level GPUImageBrightnessFilter *brightnessFilter = [[GPUImageBrightnessFilter alloc] init]; [brightnessFilter setBrightness:0.0]; [imagePicture addTarget:brightnessFilter]; // 彩度 // Saturation ranges from 0.0 (fully desaturated) to 2.0 (max saturation), with 1.0 as the normal level GPUImageSaturationFilter *saturationFilter = [[GPUImageSaturationFilter alloc] init]; [saturationFilter setSaturation:1.9]; [brightnessFilter addTarget:saturationFilter]; // コントラスト // Contrast ranges from 0.0 to 4.0 (max contrast), with 1.0 as the normal level GPUImageContrastFilter *contrastFilter = [[GPUImageContrastFilter alloc] init]; [contrastFilter setContrast:0.8]; [saturationFilter addTarget:contrastFilter]; [imagePicture processImage]; UIImage *outputImage = [contrastFilter imageFromCurrentlyProcessedOutput];
実装方法としては、addTargetで順々につないでいき、
最後につないだフィルターでimageFromCurrentlyProcessedOutputを実行すると良いみたいです。
この方法以外に、グループを作ってフィルターをかけることも可能。
imagePicture - brightness
brightness - saturation
saturation - contrast
[imagePicture processImage];
[contrast imageFromCurrentlyProcessedOutput];
今回紹介したものをそのまま使用すれば、カメラアプリの色補正機能を実装することができます。
もちろん、その他のフィルターも使用可能なので試してみると良いかもしれません。
おすすめの書籍
- 作者: Matt Galloway,長尾高弘
- 出版社/メーカー: 翔泳社
- 発売日: 2013/11/02
- メディア: 大型本
- この商品を含むブログ (2件) を見る