在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
oc版本号 //万花筒模式 + (CGImageRef) getKaleidoscope:(CIContext *)context { CIImage * image = [CIImage imageWithCGImage:[UIImage imageNamed:@"Icon"].CGImage]; CIFilter * kaleidoscope = [CIFilter filterWithName:@"CIKaleidoscope"]; [kaleidoscope setDefaults]; [kaleidoscope setValue:image forKey:kCIInputImageKey]; [kaleidoscope setValue:[CIVector vectorWithX:5 Y:0] forKey:kCIInputCenterKey]; CIImage * result = [kaleidoscope valueForKey:kCIOutputImageKey]; CGRect extent = [result extent]; CGImageRef cgImage = [context createCGImage:result fromRect:extent]; return cgImage; } //凹凸变形 + (CGImageRef) getBumpDistortion:(CIContext *)context { CIImage * image = [CIImage imageWithCGImage:[UIImage imageNamed:@"Icon"].CGImage]; CIFilter * bumpDistortion = [CIFilter filterWithName:@"CIBumpDistortion"]; [bumpDistortion setDefaults]; [bumpDistortion setValue:image forKey:kCIInputImageKey]; [bumpDistortion setValue:[CIVector vectorWithX:10 Y:5] forKey:kCIInputCenterKey]; [bumpDistortion setValue:@55.0f forKey:kCIInputRadiusKey]; [bumpDistortion setValue:@(3.0f) forKey:kCIInputScaleKey]; CIImage * result = [bumpDistortion valueForKey:kCIOutputImageKey]; CGRect extent = [result extent]; CGImageRef cgImage = [context createCGImage:result fromRect:extent]; return cgImage; } //色调调整 + (CGImageRef) getHueAdjust:(CIContext *)context { CIImage * image = [CIImage imageWithCGImage:[UIImage imageNamed:@"Icon"].CGImage]; CIFilter * hueAdjust = [CIFilter filterWithName:@"CIHueAdjust"]; [hueAdjust setValue:image forKey:kCIInputImageKey]; [hueAdjust setValue:@2.094f forKey:kCIInputAngleKey]; CIImage * result = [hueAdjust valueForKey:kCIOutputImageKey]; CGRect extent = [result extent]; CGImageRef cgImage = [context createCGImage:result fromRect:extent]; return cgImage; } //变暗 + (CGImageRef) getGloom:(CIContext *) context { CIImage * image = [CIImage imageWithCGImage:[UIImage imageNamed:@"Icon"].CGImage]; CIFilter * gloom = [CIFilter filterWithName:@"CIGloom"]; [gloom setDefaults]; [gloom setValue:image forKey:kCIInputImageKey]; [gloom setValue:@5.0f forKey:kCIInputRadiusKey]; [gloom setValue:@1.0f forKey:kCIInputIntensityKey]; CIImage * result = [gloom valueForKey:kCIOutputImageKey]; CGRect extent = [result extent]; CGImageRef cgImage = [context createCGImage:result fromRect:extent]; return cgImage; } //深褐色调 + (CGImageRef) getSepiaTone:(CIContext *) context { CIImage * image = [CIImage imageWithCGImage:[UIImage imageNamed:@"Icon"].CGImage]; CIFilter * sepiaTone = [CIFilter filterWithName:@"CISepiaTone"]; [sepiaTone setDefaults]; [sepiaTone setValue:image forKey:kCIInputImageKey]; [sepiaTone setValue:@0.8f forKey:kCIInputIntensityKey]; CIImage * result = [sepiaTone valueForKey:kCIOutputImageKey]; CGRect extent = [result extent]; CGImageRef cgImage = [context createCGImage:result fromRect:extent]; return cgImage; } //合成 + (CGImageRef) getAdditionCompositing:(CIContext *) context { CIImage * image = [CIImage imageWithCGImage:[UIImage imageNamed:@"Icon"].CGImage]; CIImage * image1 = [CIImage imageWithCGImage:[UIImage imageNamed:@"ren"].CGImage]; CIFilter * accordionFoldTransition = [CIFilter filterWithName:@"CIAdditionCompositing"]; [accordionFoldTransition setDefaults]; [accordionFoldTransition setValue:image forKey:kCIInputImageKey]; [accordionFoldTransition setValue:image1 forKey:kCIInputBackgroundImageKey]; CIImage * result = [accordionFoldTransition valueForKey:kCIOutputImageKey]; CGRect extent = [result extent]; CGImageRef cgImage = [context createCGImage:result fromRect:extent]; return cgImage; } //高斯模糊 + (CGImageRef) getGaussianBlur:(CIContext *) context { CIImage * image = [CIImage imageWithCGImage:[UIImage imageNamed:@"Icon"].CGImage]; CIFilter * gaussianBlur = [CIFilter filterWithName:@"CIGaussianBlur"]; [gaussianBlur setDefaults]; [gaussianBlur setValue:image forKey:kCIInputImageKey]; [gaussianBlur setValue:@5.0f forKey:kCIInputRadiusKey]; CIImage * result = [gaussianBlur valueForKey:kCIOutputImageKey]; CGRect extent = [result extent]; CGImageRef cgImage = [context createCGImage:result fromRect:extent]; return cgImage; } //变焦模糊 + (CGImageRef) getZoomBlur:(CIContext *) context { CIImage * image = [CIImage imageWithCGImage:[UIImage imageNamed:@"Icon"].CGImage]; CIFilter * zoomBlur = [CIFilter filterWithName:@"CIZoomBlur"]; [zoomBlur setDefaults]; [zoomBlur setValue:image forKey:kCIInputImageKey]; [zoomBlur setValue:@10.0f forKey:@"inputAmount"]; [zoomBlur setValue:[CIVector vectorWithCGPoint:CGPointMake(10, 10)] forKey:kCIInputCenterKey]; CIImage * result = [zoomBlur valueForKey:kCIOutputImageKey]; CGRect extent = [result extent]; CGImageRef cgImage = [context createCGImage:result fromRect:extent]; return cgImage; } //白点调整 + (CGImageRef) getWhitePointAdjust:(CIContext *) context { CIImage * image = [CIImage imageWithCGImage:[UIImage imageNamed:@"Icon"].CGImage]; CIFilter * zoomBlur = [CIFilter filterWithName:@"CIWhitePointAdjust"]; [zoomBlur setDefaults]; [zoomBlur setValue:image forKey:kCIInputImageKey]; [zoomBlur setValue:[CIColor colorWithRed:1.0 green:0.5 blue:1.0 alpha:1.0] forKey:@"inputColor"]; CIImage * result = [zoomBlur valueForKey:kCIOutputImageKey]; CGRect extent = [result extent]; CGImageRef cgImage = [context createCGImage:result fromRect:extent]; return cgImage; } //标签效应 + (CGImageRef) getVignetteEffect:(CIContext *) context { CIImage * image = [CIImage imageWithCGImage:[UIImage imageNamed:@"Icon"].CGImage]; CIFilter * zoomBlur = [CIFilter filterWithName:@"CIVignetteEffect"]; [zoomBlur setDefaults]; [zoomBlur setValue:image forKey:kCIInputImageKey]; [zoomBlur setValue:[CIVector vectorWithCGPoint:CGPointMake(10, 10)] forKey:kCIInputCenterKey]; [zoomBlur setValue:@0.5f forKey:@"inputFalloff"]; [zoomBlur setValue:@1.0f forKey:@"inputIntensity"]; [zoomBlur setValue:@100.0f forKey:@"inputRadius"]; CIImage * result = [zoomBlur valueForKey:kCIOutputImageKey]; CGRect extent = [result extent]; CGImageRef cgImage = [context createCGImage:result fromRect:extent]; return cgImage; } //多个效果合成 + (CGImageRef) getMix:(CIContext *) context { CIImage * image = [CIImage imageWithCGImage:[UIImage imageNamed:@"Icon"].CGImage]; CIFilter * zoomBlur = [CIFilter filterWithName:@"CIVignetteEffect"]; [zoomBlur setDefaults]; [zoomBlur setValue:image forKey:kCIInputImageKey]; [zoomBlur setValue:[CIVector vectorWithCGPoint:CGPointMake(10, 10)] forKey:kCIInputCenterKey]; [zoomBlur setValue:@0.5f forKey:@"inputFalloff"]; [zoomBlur setValue:@1.0f forKey:@"inputIntensity"]; [zoomBlur setValue:@100.0f forKey:@"inputRadius"]; CIImage * result = [zoomBlur valueForKey:kCIOutputImageKey]; CIFilter * gaussianBlur = [CIFilter filterWithName:@"CIGaussianBlur"]; [gaussianBlur setDefaults]; [gaussianBlur setValue:result forKey:kCIInputImageKey]; [gaussianBlur setValue:@5.0f forKey:kCIInputRadiusKey]; result = [gaussianBlur valueForKey:kCIOutputImageKey]; CGRect extent = [result extent]; CGImageRef cgImage = [context createCGImage:result fromRect:extent]; return cgImage; } 以上介绍了几个滤镜模式,假设想查询系统内置了多少种滤镜,能够运行下面代码查看: //查看全部内置滤镜 NSArray *filterNames=[CIFilterfilterNamesInCategory:kCICategoryBuiltIn]; for (NSString *filterNamein filterNames) { CIFilter *filter=[CIFilterfilterWithName:filterName]; NSLog(@"\rfilter:%@\rattributes:%@",filterName,[filterattributes]); } 以下截取控制台输出的部分滤镜消息。 就拿CIZoomBlur滤镜模式来说。打印出来的信息。能够看到,里面定义了一些属性(每种滤镜,所含有的属性会有区别。在使用的时候,特别要注意)。 属性名称能够使用定义好的结构体成员kCIInputImageKey。或者直接@"inputImage"调用,都是表示输入的图片。 inputImage相应的value里面定义了这个属性是什么类型的。属性描写叙述等。 假设须要其它滤镜模式的能够去查看。 swift版本号 //万花筒模式 static func getKaleidoscope(context: CIContext) -> CGImageRef { let imageName = UIImage(named:"Icon")? 以上介绍了几个滤镜模式,假设想查询系统内置了多少种滤镜。能够运行下面代码查看: //查看全部内置滤镜
let filterNames = CIFilter.filterNamesInCategory(kCICategoryBuiltIn) for filterName in filterNames { let filter = CIFilter(name: filterName) print("\rfilter:\(filterName)\rattributes:\(filter?.attributes)") } 以下截取控制台输出的部分滤镜消息。
就拿CIZoomBlur滤镜模式来说,打印出来的信息,能够看到,里面定义了一些属性(每种滤镜,所含有的属性会有区别。在使用的时候,特别要注意)。 属性名称能够使用定义好的结构体成员kCIInputImageKey,或者直接"inputImage"调用,都是表示输入的图片。 inputImage相应的value里面定义了这个属性是什么类型的。属性描写叙述等。假设须要其它滤镜模式的能够去查看。 project下载地址:http://download.csdn.net/detail/xiaopingping1234567/9458261 |
请发表评论