//
// 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