CGImage与CGImageRef的关系

UIImage虽然可以加载、显示各种格式的位图,甚至可以同时加载图片,接下来依次播放多张图片形成动画。但UIImage的功能依然有限,它不能对图片进行缩放、旋转,不能"挖取"源图片的指定区域等,这些功能可借助Quartz 2D的CGImageRef来实现。

关于Quartz 2D绘图的知识,后面会详细介绍,包括如何利用CGImageRef来绘制、旋转、缩放位图等。

UIImage与CGImageRef之间可以相互转换,CGImageRef并不是面向对象的API,也不是类,只是一个指针类型,Quartz 2D对CGImageRef的定义为:typedef struct CGImage *CGImageRef;,由此可见,CGImageRef只是一个指针类型。

如果已有UIImage,程序可以调用UIImage的CGImage方法获取它封装的CGImageRef。例如,如下代码:

UIImage* image = ...  
CGImageRef ciRef = [image CGImage]; 

如果已有CGImageRef,将它包装成UIImage也很简单,调用UIImage的imageWithCGImage:方法加载图片即可。例如如下代码:

CGImageRef ciRef = ...  
UIImage* image = [UIImage imageWithCGImage: ciRef];

你可能感兴趣的:(CGImage与CGImageRef的关系)