【问题标题】:Core Image Filter iOS UISlider核心图像过滤器 iOS UISlider
【发布时间】:2014-04-09 17:52:06
【问题描述】:

我正在尝试对从照片库加载到 UI 视图中的图像实施棕褐色过滤器。

我有一个 UI 滑块...范围 -1 到 1。并应用棕褐色效果。

我遇到的问题是,总体效果正在得到总结。就像...如果我将滑块设置为 1,然后将其移回 0。它不会将图像恢复到原始形式。我将它移回 1 .. 总棕褐色被应用了 2 次。

- (IBAction)slidermove:(id)sender {

    currentValue=_sliderValue.value;

    if (currentButton==1)
    {
        //1
        CIImage *beginImage = [CIImage imageWithData: UIImagePNGRepresentation(self.imageView.image)];

        //2
        CIContext *context = [CIContext contextWithOptions:nil];

        //3
        CIFilter *filter = [CIFilter filterWithName:@"CISepiaTone"
                                      keysAndValues: kCIInputImageKey, beginImage,
                            @"inputIntensity", [NSNumber numberWithFloat:currentValue], nil];

        //4
        CIImage *outputImage = [filter outputImage];

        CGImageRef cgimg = [context createCGImage:outputImage fromRect:[outputImage extent]];

        //5
        self.imageView.image = [UIImage imageWithCGImage:cgimg];

        //6
        CGImageRelease(cgimg);
    }


}



- (IBAction)applyeffect:(id)sender
{
    currentButton=1;


}

【问题讨论】:

    标签: ios filter uiimageview uislider core-image


    【解决方案1】:

    出现问题是因为您没有保存原始图像。每次滑块更改时,您都会更改图像,因此效果会复合。你应该这样做:

    在你的@interface:

    @property(strong, nonatomic)UIImage *originalImage;
    

    在你的@implementation:

    -(void)viewDidLoad{
        [super viewDidLoad];
        self.imageView.image = self.originalImage;
    }
    

    然后当你做效果的时候,把它应用到originalImage属性上,并在self.imageView中显示结果。

    【讨论】:

    • 更好的是,我建议不要在每次移动滑块时重新创建过滤器、上下文和初始 CIImage。那将是非常昂贵的。相反,创建上下文、初始 CIImage 和过滤一次,然后简单地使用滑块调整值。更好的是,不要渲染到 UIImage 和 UIImageView,而是将结果渲染到 OpenGL ES 上下文以进行实时更新,并且只在需要时拉取完整的 UIImage。
    • 68cherries,当我在beginImage中使用原始图像时,只要我移动滑块,图像就会消失。 CIImage *beginImage = [CIImage imageWithData: UIImagePNGRepresentation(self.originalImage)];
    • 你应该验证self.originalImage是在你的代码中设置的。
    猜你喜欢
    • 1970-01-01
    • 2012-04-06
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-18
    相关资源
    最近更新 更多