Сильная загруженность CPU при использовании CIFilter в Objective C

Рейтинг: 2Ответов: 1Опубликовано: 09.11.2014

Привет! Столкнулся с проблемой сильной загруженности CPU при использовании CIFilter и UISlider.
Подскажите, пожалуйста, в чем может быть проблема. Код m файла:

@implementation ViewController
UIImageView *imageView;
UIImage *endImg;
CIImage *outImgFilter;
-(void) slChange:(id)sender{
    UISlider *slider = (UISlider *)sender;
    CIImage *outImg = [[CIImage alloc] initWithImage:[UIImage imageNamed:@"derevo.jpg"]];
    CIFilter *invertColor = [CIFilter filterWithName:@"CIColorControls"];
    [invertColor setValue:outImg forKey:@"inputImage"];
    [invertColor setValue:[NSNumber numberWithFloat:slider.value] forKey:@"inputSaturation"];
    outImgFilter = [invertColor outputImage];
    endImg = [UIImage imageWithCIImage:outImgFilter];
    [imageView setImage:endImg];
}

-(void)viewDidLoad{
    [super viewDidLoad];
    UISlider *slider = [[UISlider alloc] init];
    slider.frame = CGRectMake(10, 25, 150, 20);
    [slider addTarget:self action:@selector(slChange:) forControlEvents:UIControlEventValueChanged];
    slider.minimumValue = 0;
    slider.maximumValue = 8;
    slider.value = 0;
    [self.view addSubview:slider];

    NSString *imagePath = @"derevo.jpg";
    imageView = [[UIImageView alloc] initWithFrame:CGRectMake(10, 100, 355, 355)];
    imageView.image = [UIImage imageNamed:imagePath];
    [self.view addSubview:imageView];
}

-(void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

Ответы

▲ 1

Наткнулся на интересную статью. Надеюсь, Вам поможет.

В плане CIFilter, я не знаю, как улучшить его быстродействие. Действительно работает медленно. Я не использовал его для real-time отрисовки.