赞
踩
一.使用图像
UIImage是UIKIt框架中定义的图像类,其中封装了高层次图像类,可以通过多种方式创建这些对象。在Core Graphics框架(Quartz 2D)中也定义了CGImage,它表示位图图像,因为CGImage被封装起来了所以通常通过CGImageRef来使用CGImage。在Core Image框架中也有一个图像类CIImage,CIImage封装的图像类能够很好地进行图像效果处理,例如,滤镜的使用。UIImage、CGImage和CIImage之间可以互相转化,这个过程中需要注意内存释放问题,特别是CGImage和UIImage之间转化,涉及从C变量到Objective-C对象转化,如果这里使用了ARC技术,反而会使内存释放问题更复杂。
创建UIImage图像
1.加载缓存图像程序:
+ imageNamed:
静态创建方法,从应用程序包(资源文件)中加载图片创建对象,name参数是指定文件名字,这种方法会建立图像缓存,第一次从文件中加载,以后从缓存中加载。
2.创建新的图像:
静态创建方法,通过文件路径创建图像对象。
+ imageWithData:
静态创建方法,通过内存中的NSData对象创建图像。
+ imageWithData:scale:
+ imageWithCGImage:
静态创建方法,通过CGImageRef创建图像对象。
+ imageWithCGImage:scale:orientation:
+ imageWithCIImage:
静态创建方法,通过CIImage创建图像对象。
+ imageWithCIImage:scale:orientation:
- imageWithAlignmentRectInsets:
+ animatedImageNamed:duration:
+ animatedImageWithImages:duration:
+ animatedResizableImageNamed:capInsets:duration:
- resizableImageWithCapInsets:
+ animatedResizableImageNamed:capInsets:resizingMode:duration:
- resizableImageWithCapInsets:resizingMode:
- imageWithRenderingMode:
3.初始化图像:
构造方法,通过文件路径创建图像对象。
- initWithData:
构造方法,通过内存中NSData对象创建图像对象。
- initWithData:scale:
- initWithCGImage:
构造方法,通过内存中CGimageRef对象创建图像对象。
- initWithCGImage:scale:orientation:
- initWithCIImage:
构造方法,通过内存中CIImage对象创建图像对象。
- initWithCIImage:scale:orientation:
在iOS设备中图像来源主要有以下4中不同渠道:
1.从应用程序包中(资源文件)加载;
2.从应用程序沙箱目录加载;
3.从云端服务器端获取;
4.从设备图片库获取或从照相机抓取。
如果一个icon.png文件放在应用程序包中(资源文件)加载图像,可以通过下面几种代码实现:
UIKit中提供一个图像选择器UIImagePickerController,UIImagePickerController不仅可以实现选取图像还可以捕获视频信息。相簿和相机胶卷是有区别的,相簿包含了相机胶卷。UIImagePickerController的主要属性是sourceType,sourceType属性是在枚举UIImagePickerControllerSourceType中定义的三个常量:
UIImagePickerControllerSourceTypePhotoLibrary,设置图片来源于“相簿”;
UIImagePickerControllerSourceTypeCamera,设置图片来源于“照相机”;
UIImagePickerControllerSourceTypeSavedPhotosAlbum,设置图片来源于“相机胶卷”。
UIImagePickerController委托对象需要实现UIImagePickerControllerDelegate委托协议。UIImagePickerControllerDelegate中定义了一下两个方法:
-imagePickerController:didFinishPickingMediaWithInfo:,当选择完成时调用;
imagePickerControllerDidCancel:,当选择取消时调用。
二.Core Image框架
Core Image框架有以下几个非常重要的类:
在Core Image中最常用的是CIImage类,创建方法如下:
创建一个图像:
+ emptyImage
+ imageWithColor:
+ imageWithBitmapData:bytesPerRow:size:format:colorSpace:
+ imageWithCGImage://静态创建方法,通过CGImageRef创建图像对象。
+ imageWithCGImage:options:
+ imageWithContentsOfURL://静态创建方法,通过文件路径创建图像对象。
+ imageWithContentsOfURL:options:
+ imageWithCVPixelBuffer:
+ imageWithCVPixelBuffer:options:
+ imageWithData://静态创建对象,通过内存中NSData对象创建图像对象。
+ imageWithData:options:
+ imageWithTexture:size:flipped:colorSpace:
通过修改一个现有的图像创建一个图像:
- imageByApplyingFilter:withInputParameters:
- imageByApplyingTransform:
- imageByCroppingToRect:
- imageByApplyingOrientation:
- imageByClampingToExtent
- imageByCompositingOverImage:
初始化一个图像:
- initWithColor:
- initWithBitmapData:bytesPerRow:size:format:colorSpace:
- initWithCGImage://构造方法,通过CGImageRef创建图像对象。
- initWithCGImage:options:
- initWithImage:
- initWithImage:options:
- initWithContentsOfURL://构造方法,通过文件路径创建图像对象。
- initWithContentsOfURL:options:
- initWithCVPixelBuffer:
- initWithCVPixelBuffer:options:
- initWithData://构造方法,通过内存中NSData对象创建图像对象。
- initWithData:options:
- initWithTexture:size:flipped:colorSpace:
在iOS设备中CIImage图像来源有主要4种不同渠道:
1.从应用程序包中(资源文件)加载;
2.从应用程序沙箱目录加载;
3.从云端服务器获取;
4.从设备图片库选取或从照相机抓取。
三.滤镜
滤镜使用流程可以分成以下三个步骤:
1.创建滤镜CIFilter对象;
2.设置滤镜参数;
3.输出结果。
例如:
- CIContext *context = [CIContext contextWithOptions:nil];
- CIImage *cImage = [CIImage imageCGImage:[imageView.image CGImage]];
- CIFilter *invert = [CIFilter filterWithName:@"CIColorInvert"];//创建滤镜对象
- [invert setDefaults];//设置滤镜的默认参数
- [invert setValue:cImage forKey:@"inputImage"];//设置输入参数
- CIImage *result = [invert valueForKey:@"outputImage"];//获得输出的CIImage对象,也可以为CIImage *result = [invert outputImage];
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。