CIFilter实现简单滤镜效果

Simulator Screen Shot.png
- (void)setupData {
    // 定义效果
    self.ljNamesArray = @[@"Original",@"CILinearToSRGBToneCurve",@"CIPhotoEffectChrome",@"CIPhotoEffectFade",@"CIPhotoEffectInstant",@"CIPhotoEffectMono",@"CIPhotoEffectProcess",@"CIPhotoEffectTonal",@"CIPhotoEffectTransfer"].mutableCopy;
    self.effectNameArray = @[@"Original",@"Curve",@"Chrome",@"Fade",@"Instant",@"Mono",@"Process",@"Tonal",@"Transfer"].mutableCopy;
    self.originalImage = [UIImage imageNamed:@"200922723503567.jpg"];
    for (int i = 0; i < self.ljNamesArray.count; i++) {
        UIImage *image = [LEAuxiliary changeImage:self.originalImage withIndex:i effectArray:self.ljNamesArray.copy];
        [self.ljImagesArray addObject:image];
    }
    
}

实现

+ (UIImage *)changeImage:(UIImage *)originalImage withIndex:(int)index effectArray:(NSArray *)effectArray {
    switch (index) {
        case 0:
        {
            return originalImage;
        }
            break;
        default:
        {
            return  [self Image:originalImage withEffect:effectArray[index]];
        }
            break;
    }

}

+ (UIImage *)Image:(UIImage *)image withEffect:(NSString *)effect {
    CIImage *ciImage = [[CIImage alloc] initWithImage:image];
    CIFilter *filter = [CIFilter filterWithName:effect keysAndValues:kCIInputImageKey, ciImage, nil];
    
    [filter setDefaults];
    CIContext *context = [CIContext contextWithOptions:nil];
    CIImage *outputImage = [filter outputImage];
    CGImageRef cgImage = [context createCGImage:outputImage fromRect:[outputImage extent]];
    UIImage *effetImage = [UIImage imageWithCGImage:cgImage];
    
    CGImageRelease(cgImage);
    return effetImage;
}

下方效果点击切换TableView创建

- (void)sharedInit {
    self.tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, CGRectGetMaxY(self.imageView.frame), 100, SCREEN_WIDTH) style:UITableViewStylePlain];
    self.tableView.center = CGPointMake(self.view.frame.size.width * 0.5, self.view.frame.size.height - 100);
    self.tableView.delegate         = self;
    self.tableView.dataSource       = self;
    self.tableView.showsVerticalScrollIndicator = NO;
    self.tableView.transform        = CGAffineTransformMakeRotation(-M_PI / 2);
    self.tableView.separatorStyle   = UITableViewCellSeparatorStyleNone;
    self.tableView.backgroundView   = nil;
    [self.view addSubview:self.tableView];
}

点击切换

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
  self.imageView.image = [LEAuxiliary changeImage:self.originalImage withIndex:(int)indexPath.row effectArray:self.ljNamesArray.copy];
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,271评论 4 61
  • 概述在iOS开发中UITableView可以说是使用最广泛的控件,我们平时使用的软件中到处都可以看到它的影子,类似...
    liudhkk阅读 9,101评论 3 38
  • LZ-Says:给大家推荐一个网站,有兴趣可以查阅,想为大家贡献一点自己的力量也可以投稿,老大审核通过会发表,更好...
    静心Study阅读 1,006评论 0 3
  • 时间:12月7日 内容:第一章 地点:寝室 终于进入了广告领域的学习,这次我选择的入门书籍是威廉·阿伦斯的当代广告...
    铁家军贝贝阅读 2,231评论 2 3
  • 这天醒来,我走出去。天空飘起了雪。我伸出手,去触碰这雪。 纯洁的雪花儿落在我的手上变轻、变薄,化成一丝黑色的雾气,...
    慕狱阅读 319评论 0 0