购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.2 Core Image框架

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

图3-7 Core Image框架

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

在Core Image框架中最常用的是CIImage类,有一些构造方法和静态创建方法(即直接通过类名调用静态方法创建)。这些方法如下。

在iOS设备中CIImage图像来源有主要有4种不同渠道。

如果一个icon.png文件放在应用程序包中(资源文件)加载图像,可以通过下面的几种代码实现。

NSString *path = [[NSBundle mainBundle] pathForResource:@"icon" ofType:@"png"];
NSURL *fileNameAndPath = [NSURL fileURLWithPath:path];
CIImage* image = [CIImage imageWithContentsOfURL: fileNameAndPath];

NSString *path = [[NSBundle mainBundle] pathForResource:@"icon" ofType:@"png"];
NSURL *fileNameAndPath = [NSURL fileURLWithPath:path];
CIImage * image = [[CIImage alloc] initWithContentsOfURL: fileNameAndPath];

NSString *path = [[NSBundle mainBundle] pathForResource:@"icon" ofType:@"png"];
NSData *data = [[NSData alloc] initWithContentsOfFile:path];
CIImage * image = [CIImage imageWithData:data];

NSString *path = [[NSBundle mainBundle] pathForResource:@"icon" ofType:@"png"];
NSData *data = [[NSData alloc] initWithContentsOfFile:path];
CIImage * image = [[CIImage alloc] initWithData:data];

如果icon.png文件放在应用程序沙箱目录中的Document目录下面,可以通过以下几种代码实现。

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, 
                                NSUserDomainMask, YES);
NSString* path  = [[paths lastObject] 
                            stringByAppendingPathComponent:@"icon.png"];
NSURL *fileNameAndPath = [NSURL fileURLWithPath:path];
CIImage* image = [CIImage imageWithContentsOfURL: fileNameAndPath]; 

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                NSUserDomainMask, YES);
NSString* path  = [[paths lastObject] 
                            stringByAppendingPathComponent:@"icon.png"];
NSURL *fileNameAndPath = [NSURL fileURLWithPath:path];
CIImage * image = [[CIImage alloc] initWithContentsOfURL: fileNameAndPath];

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, 
                                NSUserDomainMask, YES);
NSString* path  = [[paths lastObject] 
                            stringByAppendingPathComponent:@"icon.png"];
NSData *data = [[NSData alloc] initWithContentsOfFile:path];
CIImage * image = [CIImage imageWithData:data];

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                NSUserDomainMask, YES);
NSString* path  = [[paths lastObject] 
                            stringByAppendingPathComponent:@"icon.png"];
NSData *data = [[NSData alloc] initWithContentsOfFile:path];
CIImage * image = [[CIImage alloc] initWithData:data];

在上述代码中获得应用程序沙箱目录中Document目录语句如下:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                    NSUserDomainMask, YES);
NSString* path  = [[paths lastObject]
                                    stringByAppendingPathComponent:@"icon.png"];

如果icon.png文件放在云服务器端http://xxx/icon.png下,可以通过如下的几种方式创建CIImage图像对象。

NSURL *url = [NSURL URLWithString:@"http://xxx/icon.png"];    
NSData *data = [[NSData alloc] initWithContentsOfURL:url];
CIImage * image = [CIImage imageWithData:data];

swFX5z5qM94Nc1ihrfUqEF60Agasmzr/l292hWHofAIO5b8BRoxUPBF6+Q6fWe9v

NSURL *url = [NSURL URLWithString:@"http://xxx/icon.png"];    
NSData *data = [[NSData alloc] initWithContentsOfURL:url];
CIImage * image = [[CIImage alloc] initWithData:data];
点击中间区域
呼出菜单
上一章
目录
下一章
×