码迷,mamicode.com
首页 > 其他好文 > 详细

<图形图像,动画,多媒体> 读书笔记 --- 图像处理

时间:2014-09-24 01:43:05      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:图像处理   读书笔记   ios   

为了便于操作图像iOS中定义图像类,UIImage是UIKit框架中定义的图像类,其封装了高层次图像类,可以通过多种方式创建这些对象.在Core Graphics框架(或Quartz 2D)中也定义了CGImage,他表示位图图像,因为CGImage被封装起来了,所以通常通过CGImageRef来使用CGImage.

除了UIImage和CGImage外,在Core Image框架中也有一个图像类 CIImage,CIImage封装了图像类能够很好地进行图像效果处理.例如,滤镜的使用.UIImage,CGImage和CIImage之间可以互相转化,涉及从C到OC对象转化,如果这里使用ARC技术,要注意内存释放问题.


Core Image 框架

Core Image是图像处理中非常重要的框架,Core Image用来实时的处理和分析图像,他能处理来自于Core Graphics,Core Video,and Image I/O 等框架的数据类型.并使用CPU或GPU进行渲染,Core Image能够屏蔽很多低层次的技术细节,如OpenGL ES 和 GCD等技术


Core Image 框架中有以下几个非常重要的类

CIImage , Core Image框架中的图像类

CIContext,上下文对象,所有图像处理都在一个CIContext中完成,通过Quartz 2D和OpenGL渲染CIImage对象

CIFilter,滤镜类包含一个字典结构,对各种滤镜定义了属于各自的属性

CIDetector,面部识别类,借助于CIFaceFeature可以识别嘴和眼睛的位置


在Core Image框架中最常用的是CIImage类,有一些构造方法和静态创建方法

+ (CIImage *)imageWithCGImage:(CGImageRef)image;
//静态创建方法,通过CGImageRef创建图像对象

+ (CIImage *)imageWithContentsOfURL:(NSURL *)url;
//静态创建方法,通过文件路径创建图像对象

+ (CIImage *)imageWithData:(NSData *)data;
//静态创建方法,通过内存中NSData对象创建图像对象

- (id)initWithCGImage:(CGImageRef)image;
//构造方法,通过内存中CGImageRef对象创建图像对象

- (id)initWithData:(NSData *)data;
//构造方法,通过内存中NSData对象创建图像对象

- (id)initWithContentsOfURL:(NSURL *)url;
//构造方法,通过文件路径对象创建图像对象

CIContext *context = [CIContext contextWithOptions:nil];//创建上下文
	CIImage *cImage = [CIImage imageWithCGImage:[_image CGImage]];
	CIImage *result;
    
    CIFilter *sepiaTone = [CIFilter filterWithName: @"CISepiaTone"];//创建滤镜
    [sepiaTone setValue: cImage forKey: @"inputImage"];
    double value  = [_slider value];
    
    NSString *text =[[NSString alloc] initWithFormat:@"旧色调 Intensity : %.2f",value];
    _label.text = text;
    [text release];
    
    [sepiaTone setValue: [NSNumber numberWithFloat: value]
                 forKey: @"inputIntensity"];//设置值
    
    result = [sepiaTone valueForKey:@"outputImage"];//输出
    
    CGImageRef imageRef = [context createCGImage:result fromRect:CGRectMake(0, 0, self.imageView.image.size.width, self.imageView.image.size.height)];
    UIImage *image =  [[UIImage alloc] initWithCGImage:imageRef];
    
    _imageView.image = image;
    
    CFRelease(imageRef);//记得释放
    [image release];




<图形图像,动画,多媒体> 读书笔记 --- 图像处理

标签:图像处理   读书笔记   ios   

原文地址:http://blog.csdn.net/ioswyl88219/article/details/39211905

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!