您的位置:首页 > 产品设计 > UI/UE

为UIImage添加滤镜效果

2016-07-01 16:18 615 查看
在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];


附上几张效果图:










内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息