为UIImage添加滤镜效果

来源:互联网 发布:魏建峰 知乎 编辑:程序博客网 时间:2024/05/18 02:11

在iOS开发中,简单的为图片添加一些滤镜效果,我已经把添加的代码写在UIImage的类目中,下面是类目的实现:

.h文件

#import <UIKit/UIKit.h>@interface UIImage (UIImageCategory)- (UIImage *)addFilter:(NSString *)filter;@end
.m文件

#import "UIImage+UIImageCategory.h"#import <CoreGraphics/CoreGraphics.h>@implementation UIImage (UIImageCategory)- (UIImage *)addFilter:(NSString *)filterName{    //将UIImage转换成CIImage    CIImage *ciImage = [[CIImage alloc] initWithImage:self];        //创建滤镜    CIFilter *filter = [CIFilter filterWithName:filterName keysAndValues:kCIInputImageKey, ciImage, nil];        //已有的值不变,其他的设为默认值    [filter setDefaults];        //获取绘制上下文    CIContext *context = [CIContext contextWithOptions:nil];       //渲染并输出CIImage    CIImage *outputImage = [filter outputImage];        //创建CGImage句柄    CGImageRef cgImage = [context createCGImage:outputImage fromRect:[outputImage extent]];        //获取图片    UIImage *image = [UIImage imageWithCGImage:cgImage];        //释放CGImage句柄    CGImageRelease(cgImage);        return image;}@end
系统提供给我们的滤镜名字有很多,这里列出几个供大家使用:

[NSArray arrayWithObjects:@"original", @"ColorInvert", @"ColorMonochrome", @"ColorPosterize", @"FalseColor", 
@"RGBToneCurve", @"MaximumComponent", @"MinimumComponent", @"PhotoEffectChrome", @"PhotoEffectMono", @"PhotoEffectNoir", 
@"PhotoEffectProcess", @"PhotoEffectTonal", @"PhotoEffectTransfer", @"SepiaTone", nil];

附上几张效果图:




1 0
原创粉丝点击