ios - 将按钮从过滤后的图像重置为原始图像

标签 ios objective-c cifilter

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

(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];

最佳答案

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

@property (nonatomic, strong) UIImage *originalImage;

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

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

将数据存储在成员变量/属性中也是比将数据存储在 View 中更好的做法。

关于ios - 将按钮从过滤后的图像重置为原始图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23789547/

相关文章:

iphone - 将运行时详细信息发送到 HTML 文件,以便从 iPhone 的应用内电子邮件发送

swift - 如何使用CIFilter生成dataMatrix?

ios - 如何在 UIImage 上应用过滤器,就好像它被喷在砖墙上一样?

ios - AppStore iOS应用新版本提交问题

ios - 当 View 出现时执行函数 - Swift

ios - 如何将电话号码和电子邮件添加到地址簿

ios - 使用键盘动画 UIView

histogram - CIAreaHistogram 输入比例因子

ios - 在 gamekit 中解包 Optional 值时意外发现 nil

iphone - 如何滑动 tableviewcell 以获取部分中的特定行