首页 文章

iOS:图像过滤器CIFilter状态未维护

提问于
浏览
0

我正在尝试使用CIFilter在图像上应用各种效果(亮度,对比度,饱和度等) .

图像过滤器已成功应用 . 但是不保持编辑的最后一个图像状态,例如: if I increase brightness of image and then apply contrast to the edited image, then the contrast is applied to original image instead of being applied to the brightness increased image

以下是代码:

- (IBAction)contrastSliderValueChanged:(id)sender {

        filter=NULL;
        result=NULL;
        cgimg=NULL;
        newimg=NULL;



        if (adjustMenuTag==1) {

            filter=[CIFilter filterWithName:@"CIColorControls"];
            [filter setDefaults];
            [filter setValue:beginImage forKey:@"inputImage"];
            [filter setValue:[NSNumber numberWithFloat:contrastSlider.value] forKey:@"inputBrightness"] ;
            result=[filter valueForKey:kCIOutputImageKey];

            cgimg=[context createCGImage:result fromRect:[result extent]];
            newimg=[UIImage imageWithCGImage:cgimg];


            imageViewDisplay.image=newimg;
            beginImage = result;
            CFRelease(cgimg);
    //        beginImage = [[CIImage alloc] initWithImage:imageViewDisplay.image];


        } else if(adjustMenuTag ==2 ) {

            filter=[CIFilter filterWithName:@"CIColorControls"];
            [filter setDefaults];
            [filter setValue:beginImage forKey:@"inputImage"];
            [filter setValue:[NSNumber numberWithFloat:contrastSlider.value+0.5] forKey:@"inputContrast"] ;
            result=[filter valueForKey:kCIOutputImageKey];
            cgimg=[context createCGImage:result fromRect:[result extent]];
            newimg=[UIImage imageWithCGImage:cgimg];
            imageViewDisplay.image=newimg;
            beginImage = result;
            CFRelease(cgimg);
    //        beginImage = newimg.CIImage;  //this also doesn't work.
        }
}

我哪里错了?我该如何解决这个问题?如何维护编辑图像的状态?

1 回答

  • 0

    查看代码,每次选择菜单项时,您似乎都在创建CIColorControls过滤器的新实例 . 您应该创建一个,保留它,并根据需要更新其输入 .

相关问题