在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];
附上几张效果图: