swift中UIImage、CIImage和CGImage有什么区别

0 ios swift

我对何时使用 UIImage、CIImage 和 CGI​​mage 感到困惑

它们之间有什么区别?我什么时候可以使用它们?

Bha*_*ayi 8

用户界面图像

\n\n
\n

Apple 将 UIImage 对象描述为显示图像数据的高级方式。您可以从文件、Quartz 图像对象或您收到的原始图像数据创建图像。它们是不可变的,并且必须在初始化时指定图像 xe2x80x99s 属性。这也意味着这些图像对象可以在任何线程中安全使用。通常,您可以获取包含 PNG 或 JPEG 表示图像的 NSData 对象,并将其转换为 UIImage。创建一个新的 UIImage,例如:

\n
\n\n
var newUIImage = UIImage(data: data)\n//where data is a NSData\n
Run Code Online (Sandbox Code Playgroud)\n\n

CI图像

\n\n
\n

CIImage 是表示图像的不可变对象。它不是\xc2\xa0\n 图像。它仅具有与其关联的图像数据。它具有生成图像所需的所有\n 信息。您通常将 CIImage 对象与其他 Core Image 类(例如 CIFilter、CIContext、CIColor 和 CIVector)结合使用。您可以使用 Quartz 2D 图像、Core Videos 图像等各种来源提供的数据创建 CIImage 对象。需要使用各种 GPU 优化的 Core Image 过滤器。它们还可以转换为 NSBitmapImageReps。\n 它可以基于 CPU 或 GPU。要创建一个新的 CIImage,

\n
\n\n

例如:

\n\n
var newCIImage = CIImage(image: image)\n//where image is a UIImage\n
Run Code Online (Sandbox Code Playgroud)\n\n

CG图像

\n\n
\n

CGImage 只能表示\xc2\xa0 位图。CoreGraphics 中的操作(例如混合模式和遮罩)需要 CGImageRef。如果您需要访问\n并更改实际的位图数据,您可以使用CGImage。它还可以转换为 NSBitmapImageReps。要从 CGImage 创建新的 UIImage,

\n
\n\n

例如:

\n\n
var aNewUIImage = UIImage(CGImage: imageRef)\n//where imageRef is a CGImage\n
Run Code Online (Sandbox Code Playgroud)\n