本文共 2483 字,大约阅读时间需要 8 分钟。
转自:http://blog.csdn.net/zhibudefeng/article/details/7957325
OS5给我们带来了很多很好很强大的功能和API。Core Image就是其中之一,它使我们很容易就能处理图片的各种效果,色彩啊,曝光啊,饱和度啊,变形啊神马的。
可惜苹果一直没能完善官方文档,也没有推出示例代码,所以国内很多同学可能还没有开始使用。 但国外的大神们已经证明这是个相当强悍的框架,不仅功能强大,而且可以直接使用GPU,效率奇高,甚至可以实时的对视频进行渲染。 下面让我们来看看,如何具体使用它: 1 2 3 4 5 | // 创建基于GPU的CIContext对象 context = [CIContext contextWithOpti*****: nil ]; // 创建基于CPU的CIContext对象 //context = [CIContext contextWithOpti*****: [NSDictionary dictionaryWithObject:[NSNumber numberWithBool:YES] forKey:kCIContextUseSoftwareRenderer]]; |
1 2 3 4 5 6 7 8 | // 通过图片路径创建CIImage NSString *filePath = [[ NSBundle mainBundle] pathForResource:@ "image" ofType:@ "png" ]; NSURL *fileNameAndPath = [ NSURL fileURLWithPath:filePath]; beginImage = [CIImage imageWithContentsOfURL:fileNameAndPath]; // 通过UIImage对象创建CIImage UIImage *gotImage = ...; beginImage = [CIImage imageWithCGImage:gotImage.CGImage]; |
1 2 3 4 | // 创建过滤器 filter = [CIFilter filterWithName:@ "CISepiaTone" ]; [filter setValue:beginImage forKey:kCIInputImageKey]; [filter setValue:[ NSNumber numberWithFloat:slideValue] forKey:@ "inputIntensity" ]; |
1 2 3 4 5 | CIImage *outputImage = [filter outputImage]; CGImageRef cgimg = [context createCGImage:outputImage fromRect:[outputImage extent]]; UIImage *newImg = [UIImage imageWithCGImage:cgimg]; [imgV setImage:newImg]; CGImageRelease(cgimg); |