前段时间整理查阅滤镜的说明:滤镜说明
今天继续看coreImage这部分,之前看了一个框架GPUImage,大概了解一下这个框架用于处理图像。今天下午,把之前案例调试了一下。
创建一张带滤镜的图片。使用的过程有几个步骤,以及创建上下文,输出滤镜后的图像,到真正显示屏幕的处理。当中底层为我们做了更多的工作。
这里有几个Image CIImage CGImageRef UIImage 三个不同的概念。明天继续整理这部分的资料
//1.装一张图片出来先
NSString *path = [[NSBundle mainBundle] pathForResource:@"bbg" ofType:@"jpg"];
NSURL *myURL = [NSURL fileURLWithPath:path];
CIContext *context = [CIContext contextWithOptions:nil]; // 1
CIImage *ciImage = [CIImage imageWithContentsOfURL:myURL]; // 2
filter = [CIFilter filterWithName:@"CISepiaTone"]; // 3
[filter setValue:ciImage forKey:kCIInputImageKey];
[filter setValue:@0.8f forKey:kCIInputIntensityKey];
CIImage *outputImg = [filter outputImage]; //4
CGImageRef cgImage = [context createCGImage:outputImg fromRect:[outputImg extent]]; // 5
UIImage *uiImage =[UIImage imageWithCGImage:cgImage]; //6
self.imageView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"bbg.jpg"]];
[self.view addSubview:self.imageView];
下面更加一下其他图片处理的效果。
选择了CIPhotoEffectProcess 这种效果就可以渲染出下面的效果。 所需要的代码,更改滤镜 类型。(查询有哪些可以在这里查询 滤镜查询)
filter = [CIFilter filterWithName:@"CIPhotoEffectProcess"];
[filter setValue:uiImage forKey:kCIInputImageKey];