关于quartz2d、核心图形、核心动画、核心图像的混淆

Posted

技术标签:

【中文标题】关于quartz2d、核心图形、核心动画、核心图像的混淆【英文标题】:confusion regarding quartz2d, core graphics, core animation, core images 【发布时间】:2012-02-12 11:50:26 【问题描述】:

我正在做一个需要一些图像处理的项目,我也提出了有关它的问题,我得到了很好的解决方案,这里是链接create whole new image in ios by selecting different properties

但现在我想更详细地了解这一点,我很困惑我应该从哪里开始学习石英 2d 或核心动画或核心图形或核心图像

苹果文件说关于quartz 2d

Quartz 2D API 是 Core Graphics 框架的一部分,因此您可以 请参阅 Quartz,称为 Core Graphics,或简称为 CG。

而苹果文档中提到的核心图形是

Core Graphics 框架是一个基于 C 的 API,它基于 Quartz 高级绘图引擎。

这令人困惑,它们之间的关系如何......

现在核心动画包含所有坐标、边界、帧等概念,这些概念在绘制图像时也是必需的

核心镜像在ios 5中引入

我应该从哪里开始学习,或者我从哪个序列开始学习所有这些。

【问题讨论】:

【参考方案1】:

Quartz 和 Core Graphics 实际上是同义词。我倾向于避免使用“Quartz”,因为该术语很容易混淆(事实上,包含 Core Animation 的框架是“QuartzCore”,更容易混淆)。

我会说:

了解Core Graphics (CoreGraphics.framework) 如果您需要高性能矢量图形(线条、矩形、圆形、文本等),可能与位图/光栅图形混合并进行简单修改(例如缩放、旋转) 、边界等)。 Core Graphics 并不是特别适合更高级的位图操作(例如颜色校正)。它可以在位图/光栅操作方面做很多事情,但它并不总是显而易见或直接的。简而言之,Core Graphics 最适合“Illustrator/Freehand/OmniGraffle”类型的使用。

如果您需要动画内容,请学习 Core Animation(在 QuartzCore.framework 内)。基本动画(例如在屏幕上移动视图)可以完全不使用 Core Animation,使用基本的 UIView 功能,但如果你想做更高级的动画,Core Animation 是你的朋友。有点不直观的是,Core Animation 也是 CALayer 系列类的所在地,除了可动画化之外,它还允许您做一些更有趣的事情,例如快速(尽管性能不佳)视图阴影和 3D 变换(给您可能会想到的作为“穷人的OpenGL”)。但它主要用于动画内容(或内容属性,如颜色和不透明度)。

如果您需要高性能、像素精确的图像处理,请了解 Core Image(在 QuartzCore.framework 内)。这可能是从色彩校正到镜头光晕再到模糊以及介于两者之间的所有内容。 Apple 发布了a filter reference,其中列举了各种可用的预构建 Core Image 过滤器。您也可以自己编写,尽管这不一定适合胆小的人。简而言之,如果您需要实现“[选择您最喜欢的照片编辑器]过滤器”之类的功能,那么 Core Image 就是您的首选。

这是否说明问题?

【讨论】:

非常感谢您的回答,它非常有用,请帮助我了解我在 ios 应用程序中尝试做的另一件事,允许用户从库或 cam 中选择图像,然后允许用户应用边框和文本,然后将其保存为全新的图像,对于边框,我在 PS 中创建了几种不同颜色的边框,但我希望以编程方式创建边框,并且还可以设置方形或圆角样式,所有颜色都可以申请这个我应该先学什么? 我会说使用 Core Graphics。提示:了解剪切路径。您将使用它们来圆角。 哦,还有一件事:我鼓励您以后多注意大小写和标点符号。连贯的句子很难读懂,而且你会失去一些潜在回答者的注意力。 非常感谢您的帮助,这是非常有用的回复。我会尽量使用大写和标点符号。保重。 @ConradShultz :您提到了“Core Image(在 QuartzCore.framework 内部)”,但 CoreImage 本身就是一个不同的框架:developer.apple.com/documentation/coreimage#overview【参考方案2】:

Core Animation 是一项更多依赖于 OpenGL 的技术,这意味着它受 GPU 限制。

另一方面,Core Graphics 使用 CPU 进行渲染。它比 Core Animation 更精确(像素级),但会占用你的 CPU。

【讨论】:

如果您使用具有非常复杂路径的 CAShapeLayer,那么我认为该路径也会在 CPU 上处理/渲染。 我不相信这个答案是准确的。

以上是关于关于quartz2d、核心图形、核心动画、核心图像的混淆的主要内容,如果未能解决你的问题,请参考以下文章

CoreAnimation编程指南核心动画基础

iPhone 动画核心图形

iOS开发UI篇——Core Animation核心动画CAShapeLayer(绘制图形等)简介

IKImageView 中的核心动画图像更改?

图像更改 CALayer 核心动画

HTML5 Canvas核心技术 图形动画与游戏开发学习总结