【发布时间】:2014-08-10 18:34:13
【问题描述】:
我正在创建一个包含滤镜的照片应用。过滤器可以工作,但它们会保持永久性并相互重叠。例如,我希望从图像中删除棕褐色滤镜,并在按下即时滤镜按钮时替换为即时滤镜。我如何实现这一目标?以下是该项目的一些代码:
- (IBAction)sepiaFilter:(id)sender {
CIImage *beginImage = [CIImage imageWithData: UIImagePNGRepresentation(self.picture.image)];
CIContext *context = [CIContext contextWithOptions:nil];
CIFilter *filter = [CIFilter filterWithName:@"CISepiaTone" keysAndValues:kCIInputImageKey, beginImage, @"inputIntensity", [NSNumber numberWithFloat:0.8], nil ];
CIImage *outputImage = [filter outputImage];
CGImageRef cging = [context createCGImage:outputImage fromRect:[outputImage extent]];
self.picture.image = [UIImage imageWithCGImage:cging];
CGImageRelease(cging);
}
- (IBAction)instantFilter:(id)sender {
CIImage *beginImage = [CIImage imageWithData: UIImagePNGRepresentation(self.picture.image)];
CIContext *context = [CIContext contextWithOptions:nil];
CIFilter *filterTwo = [CIFilter filterWithName:@"CIPhotoEffectInstant" keysAndValues:kCIInputImageKey, beginImage, nil ];
CIImage *outputImage = [filterTwo outputImage];
CGImageRef cging = [context createCGImage:outputImage fromRect:[outputImage extent]];
self.picture.image = [UIImage imageWithCGImage:cging];
CGImageRelease(cging);
}
(我实际上有九个过滤器,但我只需要知道如何做到这一点)感谢您的帮助
【问题讨论】:
-
保留您的原始图像,当用户应用过滤器然后决定使用另一个过滤器时,只需将您的原始图像放回去而不是尝试删除过滤器。
标签: ios xcode filter photo core-image