使用 ICC 配置文件为 JPEG 进行颜色空间转换

JPEG 格式的颜色管理

本文讨论了在处理 JPEG 格式时如何使用 ICC 配置文件执行颜色空间管理,Aspose.PSD API。JPEG 的内部颜色空间是 YCbCr,然而这种 格式 也可以容纳灰度、RGB、CMYK 和 YCCK 颜色空间以存储图像的元数据。Aspose.PSD API 主要在 RGB 空间中运行,因此 API 必须执行颜色空间转换,以便正确处理 JPEG 文件。灰度到 RGB 和 YCbCr 到 RGB 的转换可以通过数学转换完成,但是 CMYK 和 YCCK 空间不能轻松转换为 RGB 空间。

Aspose.PSD API 必须执行直接的 RGB 到 CMYK 颜色转换,用于具有 CMYK 颜色空间的 JPEG 图像。另一方面,具有 YCCK 颜色空间的图像需要执行 RGB 到 CMYK 到 YCCK 颜色转换,其中 CMYK 到 YCCK 转换使用 ITU-R BT.601 转换应用于前三个通道,保持 k 通道不变。简而言之,Aspose.PSD API 必须对 CMYK 和 YCCK 图像的 RGB 和 CMYK 颜色空间进行互换,并且这样的转换是通过 ICC Profiles 进行的,这些 ICC Profiles 基本上是描述颜色属性并帮助进行颜色转换的查找表。

ICC 配置文件

ICC 转换机制使用"配置文件",将源颜色空间映射到设备独立的 CIELAB 或 CIEXYZ 颜色空间。Aspose.PSD 可以根据需要将数据转换为这两种具有附加配置文件的颜色空间。因此,对于 ICC 转换,用户需要提供两个配置文件 - 一个 RGB 配置文件用于获得内部 CIE 颜色空间,另一个 CMYK 配置文件用于获得 CMYK 颜色特征。为了实现 CMYK 到 RGB 的转换,需要交换配置文件,即; 使用 CMYK 配置文件作为源配置文件并使用 RGB 配置文件作为目标配置文件。

通过 ICC 配置文件为 JPEG 进行颜色转换

Aspose.PSD API 隐藏了细节,提供了一种易于使用的机制,通过 JpegOptions 类来指定 ICC 配置文件。此外,Aspose.PSD 使用 SWOP、CMYK 和 sRGB 的示例配置文件嵌入到其核心中,因此在大多数常见用例中,用户不需要寻找任何特定的配置文件。这样的校正有一个缺点,即;这样的颜色空间转换是不可逆的,因为我们不能期望在 RGB 到 CMYK 到 RGB 转换后得到相同的颜色,因为不兼容的颜色空间和不同的颜色配置文件。以下代码片段演示了使用 Aspose.PSD for .NET API 指定 YCCK JPEG 图像的 RGB 和 CMYK 配置文件。在下面的示例中,RGB 和 CMYK 配置文件被更改,并且图像被保存到 YCCK 颜色空间。请注意,这些 RgbColorProfileCmykColorProfile 属性将用于更改 YCCK 颜色空间的像素数据。所有其他颜色空间不能获取用于更新颜色数据的色彩配置文件。

如果未设置任何配置文件,则 Aspose.PSD for .NET API 将使用默认配置文件。下面的示例使用目标配置文件属性来更改大多数 JPEG 图像的目标颜色空间。