美文网首页
Core Image使用

Core Image使用

作者: SpursGo | 来源:发表于2017-02-21 10:04 被阅读37次

Core Image是一个做图片滤镜用的框架,提供了大概120多重图片滤镜方式,其大概的使用方法简单记录如下:

1.基本概念

  • CIContext:图像上下文,用于管理整个图片处理过程,不同的图形上下文将利用不同的图像处理硬件进行图像处理(在 iOS 中可以通过不同的方式创建图像上下文,例如可以创建基于 CPU 的图像上下方、创建基于 GPU 的图像上下方以及创建 OpenGL 优化过的图像上下文
  • CIFilter:图像处理滤镜,每种滤镜有不同的参数设置
  • CIImage:Core Image 框架中的图像类型,主要用于输入和输出图像

2.使用

  • 当前系统支持的滤镜类型
#pragma mark 查看所有内置滤镜
-(void)showAllFilters{
    NSArray *filterNames=[CIFilter filterNamesInCategory:kCICategoryBuiltIn];
    for (NSString *filterName in filterNames) {
        CIFilter *filter=[CIFilter filterWithName:filterName];
        NSLog(@"\rfilter:%@\rattributes:%@",filterName,[filter attributes]);
    }
}
  • 第一步 首先创建一个上下文,用于做图片滤镜使用
_context=[CIContext contextWithOptions:nil];
  • 第二步 取得滤镜
_colorControlsFilter=[CIFilter filterWithName:@"CIColorControls"];
  • 第三步 初始化CIImage源图像
  _image=[CIImage imageWithCGImage:selectedImage.CGImage];
  • 第四步 设置滤镜的输入图片
 [_colorControlsFilter setValue:_image forKey:@"inputImage"];
  • 第五步 更改需要变化的滤镜参数
 [_colorControlsFilter setValue:[NSNumber numberWithFloat:slider.value] forKey:@"inputSaturation"];
  • 第六步 如果页面上的图片需要实时显示出来,就需要重新设置一下图片
#pragma mark 将输出图片设置到UIImageView
-(void)setImage{
    CIImage *outputImage= [_colorControlsFilter outputImage];//取得输出图像
    CGImageRef temp=[_context createCGImage:outputImage fromRect:[outputImage extent]];
    _imageView.image=[UIImage imageWithCGImage:temp];//转化为CGImage显示在界面中
    
    CGImageRelease(temp);//释放CGImage对象
}
  • 第七步 拿到imageView中的图片,进行存储就可以了
-(void)savePhoto:(UIBarButtonItem *)btn{
    //保存照片到相册
    UIImageWriteToSavedPhotosAlbum(_imageView.image, nil, nil, nil);
    UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"Sytem Info" message:@"Save Success!" delegate:nil cancelButtonTitle:nil otherButtonTitles:@"OK", nil];
    [alert show];
}

相关文章

网友评论

      本文标题:Core Image使用

      本文链接:https://www.haomeiwen.com/subject/zemywttx.html