高斯模糊滤镜逆转:iOS

jak*_*erg 5 xcode gaussian uiview ios

我有一个高斯模糊,我正在为一个应用程序做.

    //Get a UIImage from the UIView
    UIGraphicsBeginImageContext(self.view.bounds.size);
    [self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    //Blur the UIImage
    CIImage *imageToBlur = [CIImage imageWithCGImage:viewImage.CGImage];
    CIFilter *gaussianBlurFilter = [CIFilter filterWithName:@"CIGaussianBlur"];
    [gaussianBlurFilter setValue:imageToBlur forKey:@"inputImage"];
    [gaussianBlurFilter setValue:[NSNumber numberWithFloat:2] forKey:@"inputRadius"];
    CIImage *resultImage = [gaussianBlurFilter valueForKey:@"outputImage"];
    UIImage *endImage = [[UIImage alloc] initWithCIImage:resultImage];

    //Place the UIImage in a UIImageView
    newView = [[UIImageView alloc] initWithFrame:self.view.bounds];
    newView.image = endImage;
    [self.view addSubview:newView];
Run Code Online (Sandbox Code Playgroud)

它工作得很好,但我希望能够将其反转并使视图恢复正常.

我怎么能这样做,因为试图简单地从它的超视图中移除模糊的视图不起作用.我也尝试过将各种属性设置为零而没有运气.

fou*_*dry 3

在属性中保留指向 viewImage 的指针

@property (nonatomic, strong) UIImage* originalImage;
Run Code Online (Sandbox Code Playgroud)

然后

UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
Run Code Online (Sandbox Code Playgroud)

添加

self.originalImage = viewImage;
Run Code Online (Sandbox Code Playgroud)

要恢复您的图像:

newView.image = self.originalImage;
Run Code Online (Sandbox Code Playgroud)

当你应用模糊时,它不会改变viewImage..你创建了一个单独的CIImage,它变得模糊,并且你从模糊的CIImage创建一个新的UIImage。