IOS 美图 滤镜效果 CIFilter和UIImagePickerController

//

//  ViewController.m

//  我的美图软件

//

//  Created by dc008 on 16/1/5.

//  Copyright © 2016 lin. All rights reserved.

//


#import "ViewController.h"


@interface ViewController ()<UINavigationControllerDelegate,UIImagePickerControllerDelegate>

{

    UIImagePickerController *_imagePickerController;//系统照片选择控制器

    //Core Image

    CIContext *_context;//CI的上下文

    CIImage *_oldImage;//编辑前

    CIImage *_newImage;//编辑后

    CIFilter *_filter;//滤镜

}

@end


@implementation ViewController


- (void)viewDidLoad {

    [super viewDidLoad];

    //滤镜

//    [self showAllFilters];

    //初始化

    [self myinit];

}


- (void)myinit{

    _imagePickerController = [[UIImagePickerController alloc]init];

    _imagePickerController.delegate = self;

    //初始化CI上下文

    _context = [CIContext contextWithOptions:nil];

    //初始化滤镜

    _filter = [CIFilter filterWithName:@"CIColorControls"];

}


//查看所有内置滤镜

- (void)showAllFilters{

    NSArray *array = [CIFilter filterNamesInCategory:kCICategoryBuiltIn];

    NSLog(@"%@",array);

    NSLog(@"%ld",array.count);

}


- (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}


- (IBAction)open:(id)sender {

    //打开相册

    [self presentViewController:_imagePickerController animated:YES completion:nil];

}


- (IBAction)save:(id)sender {

    //保存图片到相册

    UIImageWriteToSavedPhotosAlbum(_imageView.image, nil, nil, nil);

    //保存成功弹出框

    UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"信息" message:@"成功保存!" preferredStyle:UIAlertControllerStyleAlert];

    [alert addAction:[UIAlertAction actionWithTitle:@"" style:UIAlertActionStyleDefault handler:nil]];

    [self presentViewController:alert animated:YES completion:nil];

}


#pragma mark 代理方法

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info{

    //关闭相册

    [self dismissViewControllerAnimated:YES completion:nil];

    //获取选择的图片(图片在info里面)

    UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];

    _imageView.image = image;

    //初始化CIImage

    _oldImage = [CIImage imageWithCGImage:[image CGImage]];

    //设置滤镜的输入图片

    [_filter setValue:_oldImage forKey:@"inputImage"];

    

}

//CI->CG->UI

- (void)setImage{

    //取得输出图像

    _newImage = [_filter outputImage];

    //

    CGImageRef temp = [_context createCGImage:_newImage fromRect:[_oldImage extent]];

    _imageView.image = [UIImage imageWithCGImage:temp];

    CGImageRelease(temp);//释放CGImage对象

}


//饱和度

- (IBAction)changeStaturation:(UISlider *)sender {

    [_filter setValue:[NSNumber numberWithFloat:sender.value] forKey:@"inputSaturation"];

    [self setImage];

}

//亮度

- (IBAction)changeBrightness:(UISlider *)sender {

    [_filter setValue:[NSNumber numberWithFloat:sender.value] forKey:@"inputBrightness"];

    [self setImage];

}

//对比度

- (IBAction)changeContrast:(UISlider *)sender {

    [_filter setValue:[NSNumber numberWithFloat:sender.value] forKey:@"inputContrast"];

    [self setImage];

}



@end


转载于:https://my.oschina.net/u/2499773/blog/597878

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值