【发布时间】:2017-12-22 22:01:32
【问题描述】:
在 imageview 上应用过滤器后无法获得原始图像。因为我想在将滑块从 1 移动到 0 后获得原始图像(最大值到最小值,我的意思是反向)。 下面是应用锐度效果的代码
- (IBAction)actionSharp:(UISlider *)sender {
demoImage = _affectView.image;
CIImage* image = [CIImage imageWithCGImage:demoImage.CGImage];
CIContext *context = [CIContext contextWithOptions:nil];
NSNumber *testNSNumber = [NSNumber numberWithFloat:_sharpActionWithSlider.value];
NSLog(@"ffghhn %f",_sharpActionWithSlider.value);
CIFilter *gaussianBlurFilter = [CIFilter filterWithName:@"CISharpenLuminance" keysAndValues: @"inputImage", image, nil];
[gaussianBlurFilter setDefaults];
[gaussianBlurFilter setValue:testNSNumber forKey:kCIInputSharpnessKey];
[gaussianBlurFilter setDefaults];
CIImage *result2 = [gaussianBlurFilter valueForKey:kCIOutputImageKey];
CGImageRef cgImage = [context createCGImage:result2 fromRect:[result2 extent]];
UIImage *sharp= [UIImage imageWithCGImage:cgImage];
UIImage *p = sharp;
self.affectView.image= p;
self.affectView.alpha = sender.value;
CGImageRelease(cgImage);
}
【问题讨论】:
-
每次您从 self.affectView.image 获取图像并为其分配新图像时都在您的操作中。因此,每次您获得新图像而不是原始图像时。您需要为原始图像添加效果,而不是更新后的图像。我已添加 ans 供您参考。
标签: ios objective-c uiimageview core-image luminance