将按钮重置为已过滤图像的原始图像

时间:2014-05-21 16:59:35

标签: ios objective-c cifilter

我试图在图片视图中为我的图片添加过滤器,当我尝试点击他们正在堆叠的过滤器按钮时。你能帮我创建一个重置或撤消按钮,以便在我从相机和相机胶卷获取原始图像时转到原始图像吗?

(IBAction)filter:(id)sender {
CIContext *context=[CIContext contextWithOptions:nil];
CIImage *image =[CIImage imageWithCGImage:imageview.image.CGImage];

CIFilter *filter =[CIFilter filterWithName:@"CISepiaTone"];
[filter setValue:image forKey:kCIInputImageKey];
[filter setValue:@1.0f forKey:@"InputIntensity"];

CIImage *result =[filter valueForKey:kCIOutputImageKey];


CGImageRef cgImage =[context createCGImage:result fromRect:result.extent];

UIImage *uiImage =[[UIImage alloc]initWithCGImage:cgImage];
[self.imageview setImage:uiImage];

1 个答案:

答案 0 :(得分:1)

您的过滤器正在堆叠,因为您正在修改图像视图中的图像,然后将修改后的图像放回到图像视图中。您应该将原始图像存储在单独的属性中,并始终从中开始修改。例如,像:

这样的属性
@property (nonatomic, strong) UIImage *originalImage;

然后在您的方法中,使用原始图像而不是图像视图中已有的图像:

CIImage *image = [CIImage imageWithCGImage:self.originalImage.CGImage];

将数据存储在成员变量/属性中也比在视图中存储数据更好。