//ide
// ViewController.mui
// 個人美圖軟件spa
//.net
// Created by dc008 on 16/1/5.3d
// Copyright © 2016年 lin. All rights reserved.代理
//orm
#import "ViewController.h"對象
@interface ViewController ()<UINavigationControllerDelegate,UIImagePickerControllerDelegate>圖片
{get
UIImagePickerController *_imagePickerController;//系統照片選擇控制器
//Core Image
CIContext *_context;//CI的上下文
CIImage *_oldImage;//編輯前
CIImage *_newImage;//編輯後
CIFilter *_filter;//濾鏡
}
@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