简单的说,CGImageRef是与位图打交道的
先来看一段e文
翻译一下:
1)NSImage 是一个抽象类,它能代表各种图像类型,同时也能定义各种图像。通常,大家如果对图像的类型不在意的话,NSImage是很好用的。同时,他也是Appkit唯一能接受的图像类,至少到目前为止是这样。(Appkit , UIKit 是iphone里界面,UI的库)
2)CGImage只能代表bitmaps。如果你像直接和bitmap 数据打交道,CGImage是很好的选择。对CGImage的操作都在Core graphics中,诸如混合(blend)和遮罩(masking)需要CGImageRef。 CGImageRef 能用来创建NSBitmapImageRep, 它能添加到NSImage。
3)我认为官方文档对于CIImage的定义最为准确:
尽管 CIImage 对象中包含了与它相关的图像数据,它并不是一个图像。你可以把 CIImage 对象看作一个图像“处方”。一个 CIImage 对象中包含了生成一个图像的所需要的所有信息,不过核心绘图系统在没有得到明确指令的情况下是不会绘制这个图像的。“懒惰评估”机制 (请参考“过滤器客户和过滤器创建者”) 允许核心绘图系统尽可能高效的运行
基于Mac OS X的GPU优化图像滤镜各种算法,要求使用CIImages。但是,诸如 CGImageRefs,他们能转换为 NSBitmapImageReps
两者只见互相转换得方法
1. CGImageRef转换成UIImage
CGImageRef iOffscreen = CGBitmapContextCreateImage(context);
UIImage* image = [UIImage imageWithCGImage: iOffscreen];
2.UIImage转换成CGImageRef
UIImage *loadImage=[UIImage imageNamed:@"comicsplash.png"];
CGImageRef cgimage=loadImage.CGImage;
大部分转载于http://blog.csdn.net/linzhiji/article/details/6738462,略有修改