IOS 美圖 濾鏡效果 CIFilter和UIImagePickerController

//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;//濾鏡

}

@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

相關文章
相關標籤/搜索