当前位置:   article > 正文

Core Image详解_.net core image类

.net 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.输出结果。


例如:

  1. CIContext *context = [CIContext contextWithOptions:nil];
  2. CIImage *cImage = [CIImage imageCGImage:[imageView.image CGImage]];
  3. CIFilter *invert = [CIFilter filterWithName:@"CIColorInvert"];//创建滤镜对象
  4. [invert setDefaults];//设置滤镜的默认参数
  5. [invert setValue:cImage forKey:@"inputImage"];//设置输入参数
  6. CIImage *result = [invert valueForKey:@"outputImage"];//获得输出的CIImage对象,也可以为CIImage *result = [invert outputImage];

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/125085
推荐阅读
相关标签
  

闽ICP备14008679号