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];
}