CIFilterを使って画像の輝度を調整する

イメージの明るさをCIFilterを使って調整するサンプルです。


//brightness -1.0〜1.0
-(UIImage*)adjustImage:(UIImage*)image brightness:(float)brightness
{
    brightness = MAX(brightness, -1.0);
    brightness = MIN(brightness, 1.0);

    // UIImageをCIImageに変換

    CIImage *ciImage = [[[CIImage alloc] initWithImage:image]autorelease];
    
    // フィルタの作成
    CIFilter *ciFilter = [CIFilter filterWithName:@"CIColorControls"
                          keysAndValues:kCIInputImageKey, ciImage,
                            @"inputBrightness", [NSNumber numberWithFloat:brightness]
                         ,nil];
    // 結果画像の取り出し
    CIImage* filterdImage = [ciFilter outputImage];


    // CIImageからUIImageに変換
    CIContext *ciContext = [CIContext contextWithOptions:nil];    
    CGImageRef imgRef = [ciContext createCGImage:filterdImage fromRect:[filterdImage extent]];    
    UIImage* resultImage = [UIImage imageWithCGImage:imgRef scale:1.0f orientation:UIImageOrientationUp];
    CGImageRelease(imgRef);

    return resultImage;    
}

以上

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です