如何在预览中保存图像时应用Quartz滤镜

【2024-12-19 13:29:00AI Siri网最新消息】

Core Graphics 提供了默认的图像滤镜以快速实现特殊效果。以下是如何在 macOS 的预览中保存带效果的图像文件。

苹果的 Core Graphics (Quartz) 2D 成像子系统提供了高性能且一致的 API,用于创建、保存和处理图形。它还负责在苹果平台上绘制大部分文本(Core Text)。

Quartz 能够在细微像素精度下绘制文本,并且即使特定显示器无法在完整计算分辨率下显示文本,也能进行抗锯齿处理。

Quartz 涉及广泛,几乎涵盖了所有苹果操作系统(包括 iOS 和 macOS)上的 2D 成像方面。Quartz 是苹果最古老的框架之一,随 Mac OS X 一同首发。

其成像模型基于合成,可以将多个图形层结合在一起,支持透明度(alpha)的操作、变换、保存、打印或复制到显示器。

Quartz 复合器负责图像的组装和操作,合并图像以及旋转、应用变换或改变图像形状。一旦最终图像组装完成,显示引擎就会将图像移动(或“传输”)到显示器或打印机上。

在 macOS 中,窗口服务器则进一步处理图像的剪裁和遮挡,以确保发送到特定窗口的显示图像仅保留在那些窗口中。

macOS 的窗口服务器本身在组装窗口内容时使用 Quartz 复合器。

为了提高性能,窗口服务器知道如何剪裁图像,使得只有在窗口内可见的部分被绘制。例如,在 macOS 中,当您在窗口之间点击时,部分窗口会被其他窗口遮挡。

通过在显示时剪裁图像,窗口服务器显著提高了渲染性能,因为如果窗口的一部分被遮挡,则不必绘制整个窗口的内容。

当 Mac OS X 于 2000 年首次发布时,其图形引擎和框架在计算机行业中最为先进。

iOS 设备的工作方式与 Mac 相似,唯一不同的是它们不使用像 macOS 那样的专用窗口服务器。两者都使用相同的 Quartz 框架和 API。

在 Mac 和 iOS 设备上几乎所有内容都是通过 Quartz 绘制的。这包括单独的图像和图像文件,以及 macOS 大部分内容和其窗口的内容。

在 Mac OS X Tiger 10.4 中,苹果推出了 Quartz 2D Extreme,使 Quartz 图形能够卸载到专用 GPU。在 10.5 中,苹果将 Quartz Extreme 更名为 QuartzGL。

Quartz 复合器还利用 QuartzGL 加快渲染速度,如果有专用 GPU 的话。

苹果之前发布过一个名为 Quartz Composer 的应用程序,但现在已停止支持。

苹果已停用的 Quartz Composer 应用。
苹果的 Quartz Composer 应用。

基于几何学

您在屏幕上或打印出来的内容仅仅是 Quartz 实际计算的图形的近似值。Quartz 使用数学模型在后台计算其将要绘制的图形,除非图形是存在的位图图像,这种图像是由预渲染的像素页组成的。

这样的图形的数学模型有时被称为矢量图形,因为它们首先通过几何来计算,无论它们将如何显示或打印。

矢量图形具有极大的可伸缩性,可以任意放大或缩小。要更改图像的大小,只需重新计算不同比例的图像,或在绘制图形之前应用缩放变换。

变换是应用于图像的数学调整,用于改变其大小或形状。当您在图像编辑程序中旋转或扭曲图像时,或者在空间中操作 3D 对象时,您就是在对模型应用变换,然后重新绘制它。

变换也可以应用于位图图像,尽管这通常会导致对原始图像的某种程度的失真。

贝塞尔曲线描述了曲线矢量图形,通常以起点、控制点、一种或多种曲率度数以及塑形点或“控制柄”来改变曲线的形状。如果您曾经使用过像 Adobe Illustrator 这样的矢量绘图应用程序,您可能曾使用贝塞尔曲线来改变对象的形状。

例如,字体使用贝塞尔曲线几何和矢量绘图来描述其轮廓(笔划),以绘制每个字符。当您在 macOS 的文档中更改文本的字体或大小时,实际上是在对每个绘制的字符重新应用新的计算。

每个字体文件在 macOS 中包含绘制特定字体类型中每个文本字符的说明。

Quartz 显示服务

Quartz 还包含一个称为 Quartz Display Services (QDS) 的子系统,主要与硬件显示器有关。最初是一个很小的 API,QDS 现在扩展到数十个处理的 API,具体包括:

  1. 定位和识别显示器
  2. 更改显示属性
  3. 一次设置所有显示配置
  4. 捕获显示内容
  5. 流式传输显示内容
  6. 使用渐变效果
  7. 切换显示器镜像
  8. 应用伽马和颜色校正
  9. 接收显示更改更新

如果您曾更改过显示器的分辨率或在系统设置应用中将主菜单栏移动到另一显示器,您就使用过 QDS。

macOS 应用应该包含代码,以接收显示更改的通知,从而为新显示属性重新配置其窗口和窗口内容。

连接的显示器中包含 macOS 菜单栏的称为主显示器。每个显示器在启动时由 macOS 分配一个 DisplayID(32 位 CGDirectDisplayID)。

数据类型

Quartz 定义了一套自己的绘图原语以用于图形计算(具体描述见 Core Graphics 文档)。这些原语包括从单个整数和浮点数、几何形状(如点、大小和矩形)到路径、向量和变换。

此外,还有显示上下文、图像(用于位图)、图层、颜色和字体。显示上下文被定义为可以进行绘制的图形环境。

通常,每个显示都有一个绘图上下文,但也可以有额外的离屏和组合上下文。

您还可以更改绘图上下文的属性,以便在上下文重新绘制时改变其内容的外观。

大多数这些数据类型由简单的单个类型组成。例如,在 Quartz 中,一个 CGPoint 被定义为包含两个双精度浮点数的结构:一个X坐标和一个Y坐标。CGPoint 描述显示器或上下文中的任意单个点。

CGRect 由两个其他 Quartz 类型组成:一个 CGPoint(起始点)和一个 CGSize(尺寸)。在大多数 2D 计算机图形系统中,绘图的起始点被称为 原点

某些 2D 系统从左上角测量距离并向右和向下,其他系统则从左下角测量并向右和向上。

Quartz 还定义了 图层 (CGLayer),可以单独绘制、组合和动画。

另一种苹果框架 Core Animation 可以使用图层 (CALayer) 平滑地同时动画多个图形层。

PDF 是最初由 Adobe 创建的开放标准。
Adobe PDF 可携式文档格式。

PDF 文件

在苹果平台上,PDF 文件与 Quartz 分开处理,除了在最终渲染到显示或打印时。这是因为 PDF 最初是一个 Adobe 标准,采用 PostScript 进行渲染。

NeXT 计算机有一个基于 PostScript 的类似系统,称为 Display Postscript,使用 Adobe 技术进行显示和打印渲染。PostScript 在其图形计算中也使用矢量图形,以提供任何比例下平滑的绘制效果。

尽管 PDF 不是苹果的技术,Quartz 提供了一个名为 CGPDFDocument 的 PDF 数据类型。该数据类型的内容来自另一个 Quartz 类型 CGDataProvider

通过这两个数据类型,您可以为显示或打印创建 PDF 文档的表示。您还可以直接从文件或 URL 初始化 CGPDFDocument

CGPSConverter 是一种 Quartz 类型,可以直接用于与 PDF 和旧版 PostScript 代码之间进行转换。较旧的打印机在其 ROM 中嵌入了 PostScript,因此它们可以接收和打印 PostScript 和 PDF 文件。

苹果还提供了其他几个用于图像和文件操作的框架,包括 ImageKit、PDFKit、Quartz Composer(现在主要被弃用)和 Quick Look。

Quartz 与预览

macOS 的预览应用本质上是一个 Quartz 和 PDF 渲染应用,也可以显示位图图像。

预览使用 Quartz 组合和显示文件和图像,与 macOS 的运行方式相同。它可以执行所有绘制命令和其他 Quartz 应用能执行的变换。

预览还能够直接在窗口中渲染 PDF 和 PostScript 文件,并将其发送到激光或喷墨打印机。当您在预览中打开 PDF 文件时,它使用 Quartz API 将 PDF 绘图命令渲染到苹果原生系统上。

Quartz 与滤镜

一旦一切准备好显示,Quartz 滤镜(CIFilter)可以在显示、保存或打印图形和图像文件时应用特殊效果。PDF 也可以使用苹果的 ColorSync 技术应用图像滤镜。

Quartz 提供了一组预定义的标准滤镜,基本上将熟悉的摄影式效果应用于图像,但自定义滤镜也可以定义和应用。macOS 还包括一个滤镜管理器,用于添加、删除和管理图像滤镜。

CIFilter 可能很复杂,但只依赖于两个 Quartz 数据类型:CIImageCIContextCIImage 本质上是一个图像生成器,可以将现有图像作为输入,或者将图像绘制到 CIContext 中生成新图像。

您不需要担心 CIFilter 是如何修改图像的 – 苹果已经将所有的代码内置:您只需选择要使用的滤镜,并指示一个现有的图像或绘图上下文进行修改,Quartz 就会处理其余的。

这样就可以标准化滤镜效果,以便在 macOS 平台的软件中保持一致,只要使用 Quartz API。

在应用所选滤镜后,将输出一个新的 CIImage,可以使用。您还可以将 CIColor 应用于图像,以改变其整体颜色。

苹果还提供了用于几何变换、合成、渐变、镜头效果等的内置滤镜。所有内置滤镜按类别分组,使用以 “CI” 开头的常量。CICategoryStylize 组提供了多种将图像制作成照片、新闻纸、漫画和彩色玻璃的方式。

您可能在 Adobe Photoshop 等应用中见过这些类型的效果。

目前苹果定义的 Quartz 滤镜已有数百种,详见苹果 SDK 头文件 CIFilterBuiltins.h。但查看所有滤镜类型的更好方式是访问第三方 Core Image Filter Reference 文档项目,由 Noah Gilmore 维护。

Gilmore 还在 App Store 上提供了一款五颗星的 Core Image 参考应用 CIFIlter.io(售价 5 美元),详细介绍了苹果的内置滤镜。该网站和应用显示每种滤镜可在的 iOS 和 macOS 版本。

由 Noah Gilmore 创建的 CIFilter.io 应用。
苹果的 CIThermal 滤镜在 Noah Gilmore 的 CIFilter.io 应用中。

在预览中应用滤镜

不幸的是,macOS 的预览应用仍然不是一款全功能的图像编辑器。尽管您可以执行一些基本操作,如调整大小和旋转,但它当前不支持通用滤镜效果。

这很遗憾,因为苹果在操作系统中已经提供了所有滤镜。目前,您在预览中只能绘制基本的线条和形状、调整颜色以及添加文本。

不过,您可以在保存文件时在预览中应用滤镜,但仅限于一小部分预定义滤镜。实际上,这是一组位于 /Library/ColorSync/Profiles 中的 ColorSync Core Image 预定义滤镜,随 macOS 一起提供。

要使用,请选择 文件 -> 保存另存为,然后从 Quartz 滤镜 菜单中选择可用滤镜(如果文件格式支持的话):

在预览中选择保存文件时应用 Quartz 滤镜。
选择文件名、位置、格式和 Quartz 滤镜(如果格式支持的话)。

点击 保存 按钮以保存文件。

预览尚不支持在保存时对所有文件类型应用滤镜,包括 .PNG 文件。预览 保存 表单中提供的大部分滤镜用于转换为黑白、灰度、褐色、调整亮度以及优化文件大小。

对 PDF 文件,还有一个自定义滤镜用于将文件保存为 PDFX-3 文档,主要用于专业打印。

虽然这组滤镜有限,但它是保存时修改图像文件的快速简便方法。希望未来苹果会将更多预定义滤镜和更多文件类型纳入其中。

Core Image 是一个迷人的主题,极其简单且有用。如果苹果选择在未来扩展其在 macOS 和 iOS 中的支持,将会更加出色。

如果您对苹果平台的 Quartz 编程感兴趣,可以查看遗留文档 Quartz 2D 编程指南。还有一本很棒的第三方书籍,名为 Programming with Quartz: 2D and PDF Graphics in Mac OS X

免责声明:本网站内容主要来自原创、合作伙伴供稿和第三方自媒体作者投稿,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证有关资料的准确性及可靠性,读者在使用前请进一步核实,并对任何自主决定的行为负责。本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。任何单位或个人认为本网站中的网页或链接内容可能涉嫌侵犯其知识产权或存在不实内容时,可联系本站进行二次审核删除:fireflyrqh@163.com。
Like (0)
Previous 2024年12月19日 上午11:01
Next 2024年12月19日 下午3:59

相关推荐