我对何时使用UIImage,CIImage和CGImage感到困惑
它们之间有什么区别?什么时候可以使用它们?
答案 0 :(得分:1)
UIImage
Apple将UIImage对象描述为显示图像的高级方法 数据。您可以从文件,Quartz图像对象或 从您收到的原始图像数据中。它们是不可变的,必须指定 初始化时图像的属性。这也意味着 这些图像对象可以从任何线程安全使用。通常你可以 获取包含PNG或JPEG表示图像的NSData对象,并 将其转换为UIImage。要创建一个新的UIImage,例如:
var newUIImage = UIImage(data: data)
//where data is a NSData
CIImage
CIImage是代表图像的不可变对象。这不是一个 图片。它仅具有与之关联的图像数据。它具有所有 产生图像所需的信息。您通常使用CIImage 对象与其他Core Image类(例如CIFilter, CIContext,CIColor和CIVector。您可以使用创建CIImage对象 各种来源(例如Quartz 2D图像,Core)提供的数据 视频图像等。需要使用各种经过优化的GPU 核心图像过滤器。它们也可以转换为NSBitmapImageReps。 它可以基于CPU或GPU。要创建新的CIImage,
例如:
var newCIImage = CIImage(image: image)
//where image is a UIImage
CGImage
CGImage只能表示位图。 CoreGraphics中的操作,例如 因为混合模式和遮罩需要CGImageRefs。如果您需要访问 并更改实际的位图数据,可以使用CGImage。也可以是 转换为NSBitmapImageReps。从一个新的UIImage创建 CGImage,
例如:
var aNewUIImage = UIImage(CGImage: imageRef)
//where imageRef is a CGImage
答案 1 :(得分:0)
它们属于不同的框架:分别为UIKit
,CoreImage
和CoreGraphics
。
通常,您使用UIImage
,除非您有一个特殊的用例,其中其他框架很方便(例如使用CoreImage
过滤器)。