여러 코어 이미지 필터가있는 프로젝트가 있는데, 각각 다른 슬라이더에 연결되어 있습니다. 모든 것은 작동하지만 한 필터에서 다음 필터로 결과를 전달하는 가장 좋은 방법을 찾지 못했습니다. 각 슬라이더는 다른 슬라이더를 변경할 때마다 재설정됩니다. 이유는 가져온 이미지에서 생성 된 원본 이미지가 각 필터에 의해 입력 이미지로 그려지기 때문입니다. 그러나 이것을 고치는 방법을 모릅니다.여러 코어 이미지 필터를 사용하여 이미지를 적용하는 방법 (결과를 재설정하지 않고)
여러 필터의 결과를 하나의 출력 이미지로 전달하는 가장 좋은 방법을 생각하려고합니다. owolf.net/uploads/StackOverflow/CoreImageFilter.zip
과 viewControler의 코드 중 일부는 아래에 붙여 넣기 :
당신은있는 필터를 적용하는 순서를 선택해야- (void)viewDidLoad
{
//Create CIImage
UIImage *aUIImage = [imageView image];
CGImageRef aCGImage = aUIImage.CGImage;
aCIImage = [CIImage imageWithCGImage:aCGImage];
//Create context
context = [CIContext contextWithOptions:nil];
saturationFilter = [CIFilter filterWithName:@"CIColorControls" keysAndValues: @"inputImage", aCIImage, nil];
brightnessFilter = [CIFilter filterWithName:@"CIColorControls" keysAndValues: @"inputImage", aCIImage, nil];
contrastFilter = [CIFilter filterWithName:@"CIColorControls" keysAndValues: @"inputImage", aCIImage, nil];
[super viewDidLoad];
}
- (IBAction)saturationSliderValueChanged:(id)sender {
outputImage = [saturationFilter outputImage];
CGImageRef cgimg = [context createCGImage:outputImage fromRect:[outputImage extent]];
newUIImage = [UIImage imageWithCGImage:cgimg];
CGImageRelease(cgimg);
[imageView setImage:newUIImage];
}
- (IBAction)brightnessSliderValueChanged:(id)sender {
[brightnessFilter setValue:[NSNumber numberWithFloat:brigtnessSlider.value] forKey: @"inputBrightness"];
outputImage = [brightnessFilter outputImage];
CGImageRef cgimg = [context createCGImage:outputImage fromRect:[outputImage extent]];
newUIImage = [UIImage imageWithCGImage:cgimg];
CGImageRelease(cgimg);
[imageView setImage:newUIImage];
}
- (IBAction)contrastSliderValueChanged:(id)sender {
[contrastFilter setValue:[NSNumber numberWithFloat:contrastSlider.value] forKey: @"inputContrast"];
outputImage = [contrastFilter outputImage];
CGImageRef cgimg = [context createCGImage:outputImage fromRect:[outputImage extent]];
newUIImage = [UIImage imageWithCGImage:cgimg];
CGImageRelease(cgimg);
[imageView setImage:newUIImage];
}
감사합니다! 도움이되었습니다. – Mrwolfy