मेरे पास कई कोर छवि फ़िल्टर के साथ एक प्रोजेक्ट है, प्रत्येक एक अलग स्लाइडर से जुड़ा हुआ है। सबकुछ काम करता है लेकिन मैंने परिणामों को एक फ़िल्टर से अगले तक पास करने का सबसे अच्छा तरीका नहीं निकाला है। प्रत्येक बार जब मैं किसी भी अन्य स्लाइडर्स को बदलता हूं तो वे प्रत्येक रीसेट करते हैं। इसका कारण यह है कि आयातित छवि से बनाई गई मूल छवि प्रत्येक फ़िल्टर द्वारा इनपुट छवि के रूप में खींची जाती है। लेकिन यह सुनिश्चित नहीं है कि इसे कैसे ठीक किया जाए।एकाधिक कोर छवि फ़िल्टर के साथ एक छवि को कैसे प्रभावित करें (परिणाम को रीसेट किए बिना)
मैं एक आउटपुट छवि में एकाधिक फ़िल्टर के परिणामों में पारित करने का सबसे अच्छा तरीका सोचने की कोशिश कर रहा हूं। 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