Core Image详解

一.使用图像


        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:inBundle:compatibleWithTraitCollection:


+ imageNamed:
        静态创建方法,从应用程序包(资源文件)中加载图片创建对象,name参数是指定文件名字,这种方法会建立图像缓存,第一次从文件中加载,以后从缓存中加载。

        2.创建新的图像:

+ imageWithContentsOfFile:

        静态创建方法,通过文件路径创建图像对象。
+ 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.初始化图像:


- initWithContentsOfFile:

        构造方法,通过文件路径创建图像对象。
- 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];

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
asp.net生成PDF详解 asp.net生成PDF PDF详解 用C#制作PDF文件全攻略 丽水市汽车运输集团有限公司信息中心 苟安廷 目 录 前 言 3 第一部分 iText的简单应用 4 第一章 创建一个Document 4 第一步 创建一个Document实例: 5 第二步 创建Writer实例 6 第三步 打开Document 6 第四步 添加内容 10 第五步,关闭 document 11 第二章 块、短句和段落 11 块 11 短句 12 段落 12 字体的延续 13 第三章 锚点、列表和注释 14 锚点 14 列表 14 注释 15 第四章 页眉页脚、章节、区域和绘图对象 16 页眉页脚 16 章节和区域 17 图形 17 第五章 表格 18 一些简单的表格 18 一些表格参数 18 大表格 20 内存管理 20 嵌套表格 21 表格偏移 21 表格的绝对位置 21 第六章 图片 21 Image对象 21 图片的位置 22 缩放和旋转图片 23 原始图片数据 23 System.Drawing.Bitmap 23 TIFF和CCITT 24 图片和其他对象 24 第二部分 其他文档格式 25 第七章 XML和 (X)HTML 25 第八章 RTF文件 25 RTF包 25 创建一个RTF文档 25 不支持的特性 26 RTF中扩展的页眉和页脚 26 第三部分 iText的高级应用 27 第九章 字体 27 TrueType字体应用 27 TruType字体集合的应用 28 第十章 图象和文本的绝对位置 28 pdfContentByte 28 简单图形 29 文本 29 模板(Form xObjects) 30 分栏 31 PdfTable 32 颜色(SpotColors)和图案(Patterns) 33 第十一章 本地和异地转向、目标和概要 33 本地转向 33 异地转向 33 第十二章 页面和表格事件 34

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值