CIFilter с UISlider

Итак, у меня есть UISlider, который меняет оттенок с помощью CIFilter. Это безумно медленно, потому что я влияю на базовое изображение, пока используется uislider.

У кого-нибудь есть предложения, как сделать это более эффективно?

 // UI SLIDER
-(IBAction)changeSlider:(id)sender {

    [self doHueAdjustFilterWithBaseImage:currentSticker.image 
                            hueAdjust:[(UISlider *)sender value]];

}
//Change HUE
-(void)doHueAdjustFilterWithBaseImage:(UIImage*)baseImage hueAdjust:(CGFloat)hueAdjust {

    CIImage *inputImage = [[CIImage alloc] initWithImage:baseImage];
    CIFilter * controlsFilter = [CIFilter filterWithName:@"CIHueAdjust"];

    [controlsFilter setValue:inputImage forKey:kCIInputImageKey];
    [controlsFilter setValue:[NSNumber numberWithFloat:hueAdjust] forKey:@"inputAngle"];

    //NSLog(@"%@",controlsFilter.attributes);

    CIImage *displayImage = controlsFilter.outputImage;
    CIContext *context = [CIContext contextWithOptions:nil];

    if (displayImage == nil){

        NSLog(@"Display NADA");

    } else {

        NSLog(@"RETURN Image");
        currentSticker.image =  [UIImage imageWithCGImage:[context createCGImage:displayImage fromRect:displayImage.extent]];

    }

    displayImage = nil;
    inputImage = nil;
    controlsFilter = nil;

}
6
задан Franky 17 June 2012 в 00:19
поделиться