ImageCms 模块

ImageCms 模块使用 LittleCMS2 颜色管理引擎提供颜色配置文件管理支持,基于 Kevin Cazabon 的 PyCMS 库。

class PIL.ImageCms.ImageCmsProfile(profile: str | SupportsRead[bytes] | CmsProfile)[source]
__init__(profile: str | SupportsRead[bytes] | CmsProfile) None[source]
参数:

profile – 文件名字符串,包含配置文件的文件类对象或低级配置文件对象

tobytes() bytes[source]

返回适合嵌入到保存的图像中的格式的配置文件。

返回:

包含 ICC 配置文件的字节对象。

class PIL.ImageCms.ImageCmsTransform(input: ~PIL.ImageCms.ImageCmsProfile, output: ~PIL.ImageCms.ImageCmsProfile, input_mode: str, output_mode: str, intent: ~PIL.ImageCms.Intent = Intent.PERCEPTUAL, proof: ~PIL.ImageCms.ImageCmsProfile | None = None, proof_intent: ~PIL.ImageCms.Intent = Intent.ABSOLUTE_COLORIMETRIC, flags: ~PIL.ImageCms.Flags = <Flags.NONE: 0>)[source]

基类: ImagePointHandler

变换。它可以与过程化 API 或标准 point() 方法一起使用。

将返回 output.info['icc_profile'] 中的输出配置文件。

apply(im: Image, imOut: Image | None = None) Image[source]
apply_in_place(im: Image) Image[source]
point(im: Image) Image[source]
exception PIL.ImageCms.PyCMSError[source]

(pyCMS) 异常类。它用于 pyCMS API 中的所有错误。

常量

class PIL.ImageCms.Intent(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)[source]

基类: IntEnum

PERCEPTUAL = 0
RELATIVE_COLORIMETRIC = 1
SATURATION = 2
ABSOLUTE_COLORIMETRIC = 3
class PIL.ImageCms.Direction(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)[source]

基类: IntEnum

INPUT = 0
OUTPUT = 1
PROOF = 2
class PIL.ImageCms.Flags(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)[source]

基类: IntFlag

标志和文档取自 lcms2.h

NONE = 0
NOCACHE = 64

禁止 1 像素缓存

NOOPTIMIZE = 256

禁止优化

NULLTRANSFORM = 512

不要进行转换

GAMUTCHECK = 4096

超出色域报警

SOFTPROOFING = 16384

执行软打样

BLACKPOINTCOMPENSATION = 8192
NOWHITEONWHITEFIXUP = 4

不要修复脏点

HIGHRESPRECALC = 1024

使用更多内存以获得更高的精度

LOWRESPRECALC = 2048

使用更少的内存以最大程度地减少资源

创建 8 位设备链接

GUESSDEVICECLASS = 32

猜测设备类别(用于 transform2devicelink

KEEP_SEQUENCE = 128

为设备链接创建保留配置文件序列

FORCE_CLUT = 2

强制 CLUT 优化

CLUT_POST_LINEARIZATION = 1

如果可能,创建后线性化表

CLUT_PRE_LINEARIZATION = 16

如果可能,创建前线性化表

NONEGATIVES = 32768

防止浮点转换中的负数

COPY_ALPHA = 67108864

Alpha 通道在 cmsDoTransform() 上被复制

NODEFAULTRESOURCEDEF = 16777216
static GRIDPOINTS(n: int) Flags[source]

微调对网格点数的控制

参数:

nint 在范围内 0 <= n <= 255

函数

PIL.ImageCms.applyTransform(im: Image, transform: ImageCmsTransform, inPlace: bool = False) Image | None[source]

(pyCMS) 将变换应用于给定图像。

如果 im.mode != transform.input_mode,则会引发 PyCMSError

如果 inPlaceTrue 并且 transform.input_mode != transform.output_mode,则会引发 PyCMSError

如果 im.modetransform.input_modetransform.output_mode 不受 pyCMSdll 或您用于变换的配置文件支持,则会引发 PyCMSError

如果在应用变换时发生错误,则会引发 PyCMSError

此函数将预先计算的变换(来自 ImageCms.buildTransform() 或 ImageCms.buildTransformFromOpenProfiles())应用于图像。该变换可用于多个图像,如果多次执行相同的转换,则可以节省大量的计算时间。

如果您希望就地修改 im 而不是接收新的图像作为返回值,请将 inPlace 设置为 True。这只有在 transform.input_modetransform.output_mode 相同时才可进行,因为我们无法就地更改模式(某些模式的缓冲区大小不同)。默认行为是返回一个新的 Image 对象,该对象具有相同尺寸,并以 transform.output_mode 模式。

参数:
  • im – 一个 Image 对象,并且 im.mode 必须与变换支持的 input_mode 相同。

  • transform – 有效的 CmsTransform 类对象

  • inPlace – 布尔值。如果为 True,则会就地修改 im 并返回 None;如果为 False,则会返回一个新的 Image 对象,其中应用了变换(并且 im 不变)。默认值为 False

返回:

根据 inPlace 的值,返回 None 或新的 Image 对象。配置文件将返回到图像的 info['icc_profile'] 中。

引发:

PyCMSError

PIL.ImageCms.buildProofTransform(inputProfile: str | ~PIL._typing.SupportsRead[bytes] | ~PIL.ImageCms.core.CmsProfile | ~PIL.ImageCms.ImageCmsProfile, outputProfile: str | ~PIL._typing.SupportsRead[bytes] | ~PIL.ImageCms.core.CmsProfile | ~PIL.ImageCms.ImageCmsProfile, proofProfile: str | ~PIL._typing.SupportsRead[bytes] | ~PIL.ImageCms.core.CmsProfile | ~PIL.ImageCms.ImageCmsProfile, inMode: str, outMode: str, renderingIntent: ~PIL.ImageCms.Intent = Intent.PERCEPTUAL, proofRenderingIntent: ~PIL.ImageCms.Intent = Intent.ABSOLUTE_COLORIMETRIC, flags: ~PIL.ImageCms.Flags = <Flags.SOFTPROOFING: 16384>) ImageCmsTransform[source]

(pyCMS) 创建 ICC 变换,将 inputProfile 映射到 outputProfile,但尝试模拟在 proofProfile 设备上获得的结果。

如果指定的输入、输出或校样配置文件不是有效的文件名,则会引发 PyCMSError

如果在创建变换期间发生错误,则会引发 PyCMSError

如果 inModeoutMode 不是 outputProfile(或 pyCMS)支持的模式,则会引发 PyCMSError

此函数从 inputProfileoutputProfile 创建并返回 ICC 变换,但尝试使用 renderingIntentproofRenderingIntent 模拟在 proofProfile 设备上获得的结果,以确定如何处理超出色域的颜色。这被称为“软校样”。它仅适用于将 inMode 中的图像转换为 outMode 颜色格式(PIL 模式,即“RGB”、“RGBA”、“CMYK”等)的图像。

结果变换对象的用法与 ImageCms.buildTransform() 完全相同。

校样配置通常用于使用输出设备来了解最终打印/显示的图像在 proofProfile 设备上的显示效果,尤其是在使用输出设备判断颜色更快捷方便时。通常,这意味着输出设备是显示器或染料升华打印机(等),而模拟设备则是更昂贵、更复杂或耗时的设备(难以进行真实的打印以进行颜色判断)。

软校样基本上通过调整输出设备上的颜色来匹配正在模拟的设备的颜色来发挥作用。但是,当模拟设备的色域远大于输出设备时,您可能会得到边际结果。

参数:
  • inputProfile – 字符串,作为您希望为此变换使用的 ICC 输入配置文件的有效文件名路径,或配置文件对象

  • outputProfile – 字符串,作为您希望为此变换使用的 ICC 输出(通常为显示器)配置文件的有效文件名路径,或配置文件对象

  • proofProfile – 字符串,作为您希望为此变换使用的 ICC 校样配置文件的有效文件名路径,或配置文件对象

  • inMode – 字符串,作为适当配置文件也支持的有效 PIL 模式(即“RGB”、“RGBA”、“CMYK”等)

  • outMode – 字符串,作为适当配置文件也支持的有效 PIL 模式(即“RGB”、“RGBA”、“CMYK”等)

  • renderingIntent

    整数(0-3),指定您希望用于输入->校样(模拟)变换的渲染意图

    ImageCms.Intent.PERCEPTUAL = 0 (默认) ImageCms.Intent.RELATIVE_COLORIMETRIC = 1 ImageCms.Intent.SATURATION = 2 ImageCms.Intent.ABSOLUTE_COLORIMETRIC = 3

    有关渲染意图及其功能的详细信息,请参阅 pyCMS 文档。

  • proofRenderingIntent

    整数(0-3),指定您希望用于校样->输出变换的渲染意图

    ImageCms.Intent.PERCEPTUAL = 0 (默认) ImageCms.Intent.RELATIVE_COLORIMETRIC = 1 ImageCms.Intent.SATURATION = 2 ImageCms.Intent.ABSOLUTE_COLORIMETRIC = 3

    有关渲染意图及其功能的详细信息,请参阅 pyCMS 文档。

  • flags – 整数(0-...),指定其他标志

返回:

CmsTransform 类对象。

引发:

PyCMSError

PIL.ImageCms.buildProofTransformFromOpenProfiles(inputProfile: str | ~PIL._typing.SupportsRead[bytes] | ~PIL.ImageCms.core.CmsProfile | ~PIL.ImageCms.ImageCmsProfile, outputProfile: str | ~PIL._typing.SupportsRead[bytes] | ~PIL.ImageCms.core.CmsProfile | ~PIL.ImageCms.ImageCmsProfile, proofProfile: str | ~PIL._typing.SupportsRead[bytes] | ~PIL.ImageCms.core.CmsProfile | ~PIL.ImageCms.ImageCmsProfile, inMode: str, outMode: str, renderingIntent: ~PIL.ImageCms.Intent = Intent.PERCEPTUAL, proofRenderingIntent: ~PIL.ImageCms.Intent = Intent.ABSOLUTE_COLORIMETRIC, flags: ~PIL.ImageCms.Flags = <Flags.SOFTPROOFING: 16384>) ImageCmsTransform

(pyCMS) 创建 ICC 变换,将 inputProfile 映射到 outputProfile,但尝试模拟在 proofProfile 设备上获得的结果。

如果指定的输入、输出或校样配置文件不是有效的文件名,则会引发 PyCMSError

如果在创建变换期间发生错误,则会引发 PyCMSError

如果 inModeoutMode 不是 outputProfile(或 pyCMS)支持的模式,则会引发 PyCMSError

此函数从 inputProfileoutputProfile 创建并返回 ICC 变换,但尝试使用 renderingIntentproofRenderingIntent 模拟在 proofProfile 设备上获得的结果,以确定如何处理超出色域的颜色。这被称为“软校样”。它仅适用于将 inMode 中的图像转换为 outMode 颜色格式(PIL 模式,即“RGB”、“RGBA”、“CMYK”等)的图像。

结果变换对象的用法与 ImageCms.buildTransform() 完全相同。

校样配置通常用于使用输出设备来了解最终打印/显示的图像在 proofProfile 设备上的显示效果,尤其是在使用输出设备判断颜色更快捷方便时。通常,这意味着输出设备是显示器或染料升华打印机(等),而模拟设备则是更昂贵、更复杂或耗时的设备(难以进行真实的打印以进行颜色判断)。

软校样基本上通过调整输出设备上的颜色来匹配正在模拟的设备的颜色来发挥作用。但是,当模拟设备的色域远大于输出设备时,您可能会得到边际结果。

参数:
  • inputProfile – 字符串,作为您希望为此变换使用的 ICC 输入配置文件的有效文件名路径,或配置文件对象

  • outputProfile – 字符串,作为您希望为此变换使用的 ICC 输出(通常为显示器)配置文件的有效文件名路径,或配置文件对象

  • proofProfile – 字符串,作为您希望为此变换使用的 ICC 校样配置文件的有效文件名路径,或配置文件对象

  • inMode – 字符串,作为适当配置文件也支持的有效 PIL 模式(即“RGB”、“RGBA”、“CMYK”等)

  • outMode – 字符串,作为适当配置文件也支持的有效 PIL 模式(即“RGB”、“RGBA”、“CMYK”等)

  • renderingIntent

    整数(0-3),指定您希望用于输入->校样(模拟)变换的渲染意图

    ImageCms.Intent.PERCEPTUAL = 0 (默认) ImageCms.Intent.RELATIVE_COLORIMETRIC = 1 ImageCms.Intent.SATURATION = 2 ImageCms.Intent.ABSOLUTE_COLORIMETRIC = 3

    有关渲染意图及其功能的详细信息,请参阅 pyCMS 文档。

  • proofRenderingIntent

    整数(0-3),指定您希望用于校样->输出变换的渲染意图

    ImageCms.Intent.PERCEPTUAL = 0 (默认) ImageCms.Intent.RELATIVE_COLORIMETRIC = 1 ImageCms.Intent.SATURATION = 2 ImageCms.Intent.ABSOLUTE_COLORIMETRIC = 3

    有关渲染意图及其功能的详细信息,请参阅 pyCMS 文档。

  • flags – 整数(0-...),指定其他标志

返回:

CmsTransform 类对象。

引发:

PyCMSError

PIL.ImageCms.buildTransform(inputProfile: str | ~PIL._typing.SupportsRead[bytes] | ~PIL.ImageCms.core.CmsProfile | ~PIL.ImageCms.ImageCmsProfile, outputProfile: str | ~PIL._typing.SupportsRead[bytes] | ~PIL.ImageCms.core.CmsProfile | ~PIL.ImageCms.ImageCmsProfile, inMode: str, outMode: str, renderingIntent: ~PIL.ImageCms.Intent = Intent.PERCEPTUAL, flags: ~PIL.ImageCms.Flags = <Flags.NONE: 0>) ImageCmsTransform[source]

(pyCMS) 构建一个从 inputProfileoutputProfile 的 ICC 转换映射。 使用 applyTransform 将转换应用于给定图像。

如果指定的输入或输出配置文件不是有效的文件名,则会引发 PyCMSError。 如果在创建转换期间发生错误,则会引发 PyCMSError

如果 inModeoutMode 不是 outputProfile(或 pyCMS)支持的模式,则会引发 PyCMSError

此函数使用 renderingIntent 构建并返回一个从 inputProfileoutputProfile 的 ICC 转换,以确定如何处理超出色域的颜色。 它仅适用于将以 inMode 格式的图像转换为以 outMode 格式的图像(PIL 模式,例如“RGB”、“RGBA”、“CMYK”等)。

构建转换是 ImageCms.profileToProfile() 中相当大一部分的开销,因此,如果您计划使用相同的输入/输出设置转换多个图像,这可以节省您的时间。 拥有一个转换对象后,它可以与 ImageCms.applyProfile() 一起使用来转换图像,而无需重新计算转换的查找表。

pyCMS 返回一个类对象而不是直接处理转换的原因是它需要跟踪转换所针对的 PIL 输入/输出模式。 这些属性存储在对象的 inModeoutMode 属性中(如果您确实需要,可以手动覆盖它们,但我不知道何时有用,甚至是否有效)。

参数:
  • inputProfile – 字符串,作为您希望为此变换使用的 ICC 输入配置文件的有效文件名路径,或配置文件对象

  • outputProfile – 字符串,作为您希望用于此转换的 ICC 输出配置文件的有效文件名路径,或配置文件对象

  • inMode – 字符串,作为适当配置文件也支持的有效 PIL 模式(即“RGB”、“RGBA”、“CMYK”等)

  • outMode – 字符串,作为适当配置文件也支持的有效 PIL 模式(即“RGB”、“RGBA”、“CMYK”等)

  • renderingIntent

    整数(0-3),指定您希望用于转换的渲染意图

    ImageCms.Intent.PERCEPTUAL = 0 (默认) ImageCms.Intent.RELATIVE_COLORIMETRIC = 1 ImageCms.Intent.SATURATION = 2 ImageCms.Intent.ABSOLUTE_COLORIMETRIC = 3

    有关渲染意图及其功能的详细信息,请参阅 pyCMS 文档。

  • flags – 整数(0-...),指定其他标志

返回:

CmsTransform 类对象。

引发:

PyCMSError

PIL.ImageCms.buildTransformFromOpenProfiles(inputProfile: str | ~PIL._typing.SupportsRead[bytes] | ~PIL.ImageCms.core.CmsProfile | ~PIL.ImageCms.ImageCmsProfile, outputProfile: str | ~PIL._typing.SupportsRead[bytes] | ~PIL.ImageCms.core.CmsProfile | ~PIL.ImageCms.ImageCmsProfile, inMode: str, outMode: str, renderingIntent: ~PIL.ImageCms.Intent = Intent.PERCEPTUAL, flags: ~PIL.ImageCms.Flags = <Flags.NONE: 0>) ImageCmsTransform

(pyCMS) 构建一个从 inputProfileoutputProfile 的 ICC 转换映射。 使用 applyTransform 将转换应用于给定图像。

如果指定的输入或输出配置文件不是有效的文件名,则会引发 PyCMSError。 如果在创建转换期间发生错误,则会引发 PyCMSError

如果 inModeoutMode 不是 outputProfile(或 pyCMS)支持的模式,则会引发 PyCMSError

此函数使用 renderingIntent 构建并返回一个从 inputProfileoutputProfile 的 ICC 转换,以确定如何处理超出色域的颜色。 它仅适用于将以 inMode 格式的图像转换为以 outMode 格式的图像(PIL 模式,例如“RGB”、“RGBA”、“CMYK”等)。

构建转换是 ImageCms.profileToProfile() 中相当大一部分的开销,因此,如果您计划使用相同的输入/输出设置转换多个图像,这可以节省您的时间。 拥有一个转换对象后,它可以与 ImageCms.applyProfile() 一起使用来转换图像,而无需重新计算转换的查找表。

pyCMS 返回一个类对象而不是直接处理转换的原因是它需要跟踪转换所针对的 PIL 输入/输出模式。 这些属性存储在对象的 inModeoutMode 属性中(如果您确实需要,可以手动覆盖它们,但我不知道何时有用,甚至是否有效)。

参数:
  • inputProfile – 字符串,作为您希望为此变换使用的 ICC 输入配置文件的有效文件名路径,或配置文件对象

  • outputProfile – 字符串,作为您希望用于此转换的 ICC 输出配置文件的有效文件名路径,或配置文件对象

  • inMode – 字符串,作为适当配置文件也支持的有效 PIL 模式(即“RGB”、“RGBA”、“CMYK”等)

  • outMode – 字符串,作为适当配置文件也支持的有效 PIL 模式(即“RGB”、“RGBA”、“CMYK”等)

  • renderingIntent

    整数(0-3),指定您希望用于转换的渲染意图

    ImageCms.Intent.PERCEPTUAL = 0 (默认) ImageCms.Intent.RELATIVE_COLORIMETRIC = 1 ImageCms.Intent.SATURATION = 2 ImageCms.Intent.ABSOLUTE_COLORIMETRIC = 3

    有关渲染意图及其功能的详细信息,请参阅 pyCMS 文档。

  • flags – 整数(0-...),指定其他标志

返回:

CmsTransform 类对象。

引发:

PyCMSError

PIL.ImageCms.createProfile(colorSpace: Literal['LAB', 'XYZ', 'sRGB'], colorTemp: SupportsFloat = 0) CmsProfile[source]

(pyCMS) 创建一个配置文件。

如果 colorSpace 不在 ["LAB", "XYZ", "sRGB"] 中,则会引发 PyCMSError

如果使用 LAB 且 colorTemp 不是正整数,则会引发 PyCMSError

如果在创建配置文件时发生错误,则会引发 PyCMSError

使用此函数动态创建通用配置文件,而不是必须提供磁盘上的配置文件并知道其路径。 它返回一个正常的 CmsProfile 对象,可以将其传递给 ImageCms.buildTransformFromOpenProfiles() 以创建一个用于应用于图像的转换。

参数:
  • colorSpace – 字符串,您希望创建的配置文件的颜色空间。 目前仅支持“LAB”、“XYZ”和“sRGB”。

  • colorTemp – 配置文件白点的正数,以开尔文为单位(例如 5000、6500、9600 等)。 如果省略,则默认为 D50 光源(5000k)。 colorTemp 仅应用于 LAB 配置文件,而 XYZ 和 sRGB 忽略它。

返回:

CmsProfile 类对象

引发:

PyCMSError

PIL.ImageCms.getDefaultIntent(profile: str | SupportsRead[bytes] | CmsProfile | ImageCmsProfile) int[source]

(pyCMS) 获取给定配置文件的默认意图名称。

如果 profile 不是有效的 CmsProfile 对象或配置文件的文件名,则会引发 PyCMSError

如果在尝试获取默认意图时发生错误,则会引发 PyCMSError

使用此函数确定此配置文件的默认(通常也是最佳优化的)渲染意图。 大多数配置文件支持多种渲染意图,但主要针对一种转换类型。 如果您希望使用与返回结果不同的意图,请使用 ImageCms.isIntentSupported() 首先验证它是否有效。

参数:

profile – 有效的 CmsProfile 对象或 ICC 配置文件的文件名字符串。

返回:

整数 0-3,指定此配置文件的默认渲染意图。

ImageCms.Intent.PERCEPTUAL = 0 (默认) ImageCms.Intent.RELATIVE_COLORIMETRIC = 1 ImageCms.Intent.SATURATION = 2 ImageCms.Intent.ABSOLUTE_COLORIMETRIC = 3

有关渲染意图及其工作原理的详细信息,请参见 pyCMS 文档。

引发:

PyCMSError

PIL.ImageCms.getOpenProfile(profileFilename: str | SupportsRead[bytes] | CmsProfile) ImageCmsProfile[source]

(pyCMS) 打开一个 ICC 配置文件。

PyCMSProfile 对象可以传回 pyCMS 用于创建转换等操作(如 ImageCms.buildTransformFromOpenProfiles())。

如果 profileFilename 不是 ICC 配置文件的有效文件名,则会引发 PyCMSError

参数:

profileFilename – 字符串,作为要打开的 ICC 配置文件的有效文件名路径,或类文件对象。

返回:

CmsProfile 类对象。

引发:

PyCMSError

PIL.ImageCms.getProfileCopyright(profile: str | SupportsRead[bytes] | CmsProfile | ImageCmsProfile) str[source]

(pyCMS) 获取给定配置的版权。

如果 profile 不是有效的 CmsProfile 对象或配置文件的文件名,则会引发 PyCMSError

如果在尝试获取版权标签时发生错误,则会引发 PyCMSError

使用此函数获取存储在配置文件版权标签中的信息。

参数:

profile – 有效的 CmsProfile 对象或 ICC 配置文件的文件名字符串。

返回:

包含存储在 ICC 标签中的配置文件内部信息的字符串。

引发:

PyCMSError

PIL.ImageCms.getProfileDescription(profile: str | SupportsRead[bytes] | CmsProfile | ImageCmsProfile) str[source]

(pyCMS) 获取给定配置的描述。

如果 profile 不是有效的 CmsProfile 对象或配置文件的文件名,则会引发 PyCMSError

如果在尝试获取描述标签时发生错误,则会引发 PyCMSError

使用此函数获取存储在配置文件描述标签中的信息。

参数:

profile – 有效的 CmsProfile 对象或 ICC 配置文件的文件名字符串。

返回:

包含存储在 ICC 标签中的配置文件内部信息的字符串。

引发:

PyCMSError

PIL.ImageCms.getProfileInfo(profile: str | SupportsRead[bytes] | CmsProfile | ImageCmsProfile) str[source]

(pyCMS) 获取给定配置的内部产品信息。

如果 profile 不是有效的 CmsProfile 对象或配置文件的文件名,则会引发 PyCMSError

如果在尝试获取信息标签时发生错误,则会引发 PyCMSError

使用此函数获取存储在配置文件信息标签中的信息。这通常包含有关配置文件的信息以及创建方式,这些信息由创建者提供。

参数:

profile – 有效的 CmsProfile 对象或 ICC 配置文件的文件名字符串。

返回:

包含存储在 ICC 标签中的配置文件内部信息的字符串。

引发:

PyCMSError

PIL.ImageCms.getProfileManufacturer(profile: str | SupportsRead[bytes] | CmsProfile | ImageCmsProfile) str[source]

(pyCMS) 获取给定配置的制造商。

如果 profile 不是有效的 CmsProfile 对象或配置文件的文件名,则会引发 PyCMSError

如果在尝试获取制造商标签时发生错误,则会引发 PyCMSError

使用此函数获取存储在配置文件制造商标签中的信息。

参数:

profile – 有效的 CmsProfile 对象或 ICC 配置文件的文件名字符串。

返回:

包含存储在 ICC 标签中的配置文件内部信息的字符串。

引发:

PyCMSError

PIL.ImageCms.getProfileModel(profile: str | SupportsRead[bytes] | CmsProfile | ImageCmsProfile) str[source]

(pyCMS) 获取给定配置的型号。

如果 profile 不是有效的 CmsProfile 对象或配置文件的文件名,则会引发 PyCMSError

如果在尝试获取型号标签时发生错误,则会引发 PyCMSError

使用此函数获取存储在配置文件型号标签中的信息。

参数:

profile – 有效的 CmsProfile 对象或 ICC 配置文件的文件名字符串。

返回:

包含存储在 ICC 标签中的配置文件内部信息的字符串。

引发:

PyCMSError

PIL.ImageCms.getProfileName(profile: str | SupportsRead[bytes] | CmsProfile | ImageCmsProfile) str[source]

(pyCMS) 获取给定配置文件的内部产品名称。

如果 profile 不是有效的 CmsProfile 对象或配置文件的名称,则会引发 PyCMSError。如果在尝试获取名称标签时发生错误,则会引发 PyCMSError

使用此函数来获取配置文件的内部名称(存储在配置文件本身的 ICC 标签中),通常是配置文件最初创建时使用的名称。有时此标签还会包含创建者提供的其他信息。

参数:

profile – 有效的 CmsProfile 对象或 ICC 配置文件的文件名字符串。

返回:

包含配置文件内部名称的字符串,如存储在 ICC 标签中。

引发:

PyCMSError

PIL.ImageCms.get_display_profile(handle: SupportsInt | None = None) ImageCmsProfile | None[source]

(实验性) 获取当前显示设备的配置文件。

返回:

如果配置文件未知,则返回 None

PIL.ImageCms.isIntentSupported(profile: str | SupportsRead[bytes] | CmsProfile | ImageCmsProfile, intent: Intent, direction: Direction) Literal[-1, 1][source]

(pyCMS) 检查给定的渲染意图是否受支持。

使用此函数来验证你是否可以将你想要的 intentprofile 一起使用,以及 profile 是否可以按你想要的方式用于输入/输出/校样配置文件。

一些配置文件专门为一个“方向”创建,不能用于其他方向。有些配置文件只能用于某些渲染意图,因此最好在尝试使用它们创建变换之前验证这一点(使用此函数),或者捕获可能会发生的 PyCMSError(如果它们不支持你选择的模式)。

参数:
  • profile – 有效的 CmsProfile 对象或 ICC 配置文件的文件名字符串。

  • intent

    整数(0-3),指定要与此配置文件一起使用的渲染意图。

    ImageCms.Intent.PERCEPTUAL = 0 (默认) ImageCms.Intent.RELATIVE_COLORIMETRIC = 1 ImageCms.Intent.SATURATION = 2 ImageCms.Intent.ABSOLUTE_COLORIMETRIC = 3

    有关渲染意图及其工作原理的详细信息,请参见 pyCMS 文档。

  • direction

    整数,指定配置文件是用于输入、输出还是校样。

    INPUT = 0(或使用 ImageCms.Direction.INPUT) OUTPUT = 1(或使用 ImageCms.Direction.OUTPUT) PROOF = 2(或使用 ImageCms.Direction.PROOF)

返回:

如果渲染意图/方向受支持,则返回 1;如果不受支持,则返回 -1。

引发:

PyCMSError

PIL.ImageCms.profileToProfile(im: ~PIL.Image.Image, inputProfile: str | ~PIL._typing.SupportsRead[bytes] | ~PIL.ImageCms.core.CmsProfile | ~PIL.ImageCms.ImageCmsProfile, outputProfile: str | ~PIL._typing.SupportsRead[bytes] | ~PIL.ImageCms.core.CmsProfile | ~PIL.ImageCms.ImageCmsProfile, renderingIntent: ~PIL.ImageCms.Intent = Intent.PERCEPTUAL, outputMode: str | None = None, inPlace: bool = False, flags: ~PIL.ImageCms.Flags = <Flags.NONE: 0>) Image | None[source]

(pyCMS) 对给定图像应用 ICC 变换,从 inputProfile 映射到 outputProfile

如果指定的输入或输出配置文件不是有效的文件名,则会引发 PyCMSError。如果 inPlaceTrueoutputMode != im.mode,则会引发 PyCMSError。如果在应用配置文件期间发生错误,则会引发 PyCMSError。如果 outputMode 不是 outputProfile(或 pyCMS)支持的模式,则会引发 PyCMSError

此函数对 im 应用 ICC 变换,从 inputProfile 的颜色空间转换到 outputProfile 的颜色空间,使用指定的渲染意图来决定如何处理超出色域的颜色。

outputMode 可用于指定使用这些配置文件执行颜色模式转换,但指定的配置文件必须能够处理该模式。例如,如果使用配置文件将 im 从 RGB 转换为 CMYK,则输入配置文件必须能够处理 RGB 数据,而输出配置文件必须能够处理 CMYK 数据。

参数:
  • im – 打开的 Image 对象(例如 Image.new(…) 或 Image.open(…), etc.)

  • inputProfile – 字符串,表示要用于此图像的 ICC 输入配置文件的有效文件名路径,或配置文件对象

  • outputProfile – 字符串,表示要用于此图像的 ICC 输出配置文件的有效文件名路径,或配置文件对象

  • renderingIntent

    整数(0-3),指定您希望用于转换的渲染意图

    ImageCms.Intent.PERCEPTUAL = 0 (默认) ImageCms.Intent.RELATIVE_COLORIMETRIC = 1 ImageCms.Intent.SATURATION = 2 ImageCms.Intent.ABSOLUTE_COLORIMETRIC = 3

    有关渲染意图及其功能的详细信息,请参阅 pyCMS 文档。

  • outputMode – 输出图像的有效 PIL 模式(例如,“RGB”、“CMYK”等)。注意:如果“就地”渲染图像,则 outputMode 必须与输入模式相同,或者完全省略。如果省略,则 outputMode 将与输入图像的模式相同(im.mode)

  • inPlace – 布尔值。如果为 True,则修改原始图像,并返回 None。如果为 False(默认值),则返回一个新的 Image 对象,其中应用了变换。

  • flags – 整数(0-...),指定其他标志

返回:

根据 inPlace 的值,返回 None 或新的 Image 对象。

引发:

PyCMSError

PIL.ImageCms.versions() tuple[str, str | None, str, str][source]

(pyCMS) 获取版本。

CmsProfile

ICC 颜色配置文件封装在 CmsProfile 类实例中。ICC.1:2010 规范包含有关 ICC 配置文件中值含义的更多信息。

为了方便起见,所有 XYZ 值也以 xyY 值给出(因此它们可以轻松地在色度图中显示,例如)。

class PIL.ImageCms.core.CmsProfile
creation_date: datetime.datetime | None

此配置文件首次创建的日期和时间(请参阅 ICC.1:2010 的 7.2.1)。

version: float

此配置文件遵循的 ICC 标准的版本号(例如 2.0)。

icc_version: int

version 相同,但采用编码格式(请参阅 ICC.1:2010 的 7.2.4)。

device_class: str

标识配置文件类的 4 个字符的字符串。其中之一为 scnrmntrprtrlinkspacabstnmcl(有关详细信息,请参阅 ICC.1:2010 的 7.2.5)。

xcolor_space: str

标识颜色空间的 4 个字符的字符串(用空格填充),例如 XYZ␣RGB␣CMYK(有关详细信息,请参阅 ICC.1:2010 的 7.2.6)。

connection_space: str

标识转换 B 侧的颜色空间的 4 个字符的字符串(用空格填充)(有关详细信息,请参阅 ICC.1:2010 的 7.2.7)。

header_flags: int

配置文件的编码头标志(有关详细信息,请参阅 ICC.1:2010 的 7.2.11)。

header_manufacturer: str

标识设备制造商的 4 个字符的字符串(用空格填充),应与 www.color.org 上 ICC 签名注册表相应部分中包含的签名相匹配(请参阅 ICC.1:2010 的 7.2.12)。

header_model: str

标识设备型号的 4 个字符的字符串(用空格填充),应与 www.color.org 上 ICC 签名注册表相应部分中包含的签名相匹配(请参阅 ICC.1:2010 的 7.2.13)。

attributes: int

用于标识适用于该配置文件的特定设备设置的唯一属性的标志(有关详细信息,请参阅 ICC.1:2010 的 7.2.14)。

rendering_intent: int

将此配置文件与另一个配置文件组合时要使用的渲染意图(通常在运行时被覆盖,但在此处为 DeviceLink 和嵌入式源配置文件提供,请参阅 ICC.1:2010 的 7.2.15)。

其中之一为 ImageCms.Intent.ABSOLUTE_COLORIMETRICImageCms.Intent.PERCEPTUALImageCms.Intent.RELATIVE_COLORIMETRICImageCms.Intent.SATURATION

profile_id: bytes

标识配置文件的 16 个字节序列(通过专门构建的 MD5 检验和),或者如果未计算配置文件 ID,则为 16 个二进制零(请参阅 ICC.1:2010 的 7.2.18)。

copyright: str | None

配置文件的文本版权信息(请参阅 ICC.1:2010 的 9.2.21)。

manufacturer: str | None

设备制造商的(英文)显示字符串(请参阅 ICC.1:2010 的 9.2.22)。

model: str | None

创建此配置文件的设备的设备型号的(英文)显示字符串(请参阅 ICC.1:2010 的 9.2.23)。

profile_description: str | None

配置文件描述的(英文)显示字符串(请参阅 ICC.1:2010 的 9.2.41)。

target: str | None

已注册的表征数据集的名称,或表征目标的测量数据(请参阅 ICC.1:2010 的 9.2.14)。

red_colorant: tuple[tuple[float, float, float], tuple[float, float, float]] | None

在矩阵/TRC 变换中使用的矩阵的第一列(参见 ICC.1:2010 的 9.2.44)。

如果可用,该值采用 ((X, Y, Z), (x, y, Y)) 格式。

green_colorant: tuple[tuple[float, float, float], tuple[float, float, float]] | None

在矩阵/TRC 变换中使用的矩阵的第二列(参见 ICC.1:2010 的 9.2.30)。

如果可用,该值采用 ((X, Y, Z), (x, y, Y)) 格式。

blue_colorant: tuple[tuple[float, float, float], tuple[float, float, float]] | None

在矩阵/TRC 变换中使用的矩阵的第三列(参见 ICC.1:2010 的 9.2.4)。

如果可用,该值采用 ((X, Y, Z), (x, y, Y)) 格式。

luminance: tuple[tuple[float, float, float], tuple[float, float, float]] | None

发射设备的绝对亮度,以坎德拉每平方米为单位,由 Y 通道描述(参见 ICC.1:2010 的 9.2.32)。

如果可用,该值采用 ((X, Y, Z), (x, y, Y)) 格式。

chromaticity: tuple[tuple[float, float, float], tuple[float, float, float], tuple[float, float, float]] | None

使用的磷光体/色料色度集的数据(红色、绿色和蓝色通道,参见 ICC.1:2010 的 9.2.16)。

如果可用,该值采用 ((x, y, Y), (x, y, Y), (x, y, Y)) 格式。

chromatic_adaption: tuple[tuple[tuple[float, float, float], tuple[float, float, float], tuple[float, float, float]], tuple[tuple[float, float, float], tuple[float, float, float], tuple[float, float, float]]] | None

色度适应矩阵将使用实际照明条件并相对于实际采用的白色测量的颜色转换为相对于 PCS 采用的白色的颜色,从实际采用的白色色度完全适应到 PCS 采用的白色色度(参见 ICC.1:2010 的 9.2.15)。

在 2 元组中返回两个浮点数的 3 元组,一个在 (X, Y, Z) 空间中,另一个在 (x, y, Y) 空间中。

colorant_table: list[str]

此标记通过唯一名称和一组 PCSXYZ 或 PCSLAB 值来标识配置文件中使用的色料(参见 ICC.1:2010 的 9.2.19)。

colorant_table_out: list[str]

此标记通过唯一名称和一组 PCSLAB 值来标识配置文件中使用的色料(仅限 DeviceLink 配置文件,参见 ICC.1:2010 的 9.2.19)。

colorimetric_intent: str | None

4 个字符的字符串(用空格填充),标识使用色度意图转换产生的 PCS 色度图像状态(有关详细信息,参见 ICC.1:2010 的 9.2.20)。

perceptual_rendering_intent_gamut: str | None

4 个字符的字符串(用空格填充),标识(一个)标准参考介质色域(有关详细信息,参见 ICC.1:2010 的 9.2.37)。

saturation_rendering_intent_gamut: str | None

4 个字符的字符串(用空格填充),标识(一个)标准参考介质色域(有关详细信息,参见 ICC.1:2010 的 9.2.37)。

technology: str | None

4 个字符的字符串(用空格填充),标识设备技术(有关详细信息,参见 ICC.1:2010 的 9.2.47)。

media_black_point: tuple[tuple[float, float, float], tuple[float, float, float]] | None

此标记指定介质黑点,用于生成绝对色度。

此标记在 ICC 3.2 中可用,但在版本 4 中已删除。

如果可用,该值采用 ((X, Y, Z), (x, y, Y)) 格式。

media_white_point_temperature: float | None

计算白点温度(有关更多信息,请参阅 LCMS 文档)。

viewing_condition: str | None

查看条件的(英文)显示字符串(参见 ICC.1:2010 的 9.2.48)。

screening_description: str | None

筛选条件的(英文)显示字符串。

此标记在 ICC 3.2 中可用,但在版本 4 中已删除。

red_primary: tuple[tuple[float, float, float], tuple[float, float, float]] | None

RGB 主颜色红色 (1, 0, 0) 的 XYZ 转换。

如果可用,该值采用 ((X, Y, Z), (x, y, Y)) 格式。

green_primary: tuple[tuple[float, float, float], tuple[float, float, float]] | None

RGB 主颜色绿色 (0, 1, 0) 的 XYZ 转换。

如果可用,该值采用 ((X, Y, Z), (x, y, Y)) 格式。

blue_primary: tuple[tuple[float, float, float], tuple[float, float, float]] | None

RGB 主颜色蓝色 (0, 0, 1) 的 XYZ 转换。

如果可用,该值采用 ((X, Y, Z), (x, y, Y)) 格式。

is_matrix_shaper: bool

如果此配置文件以矩阵整形器实现(请参阅 LCMS 文档),则为 True。

clut: dict[int, tuple[bool, bool, bool]] | None

返回 CLUT 模型所有支持的意图和方向的字典。

该字典以意图为索引(ImageCms.Intent.ABSOLUTE_COLORIMETRICImageCms.Intent.PERCEPTUALImageCms.Intent.RELATIVE_COLORIMETRICImageCms.Intent.SATURATION)。

这些值是以方向为索引的 3 元组(ImageCms.Direction.INPUTImageCms.Direction.OUTPUTImageCms.Direction.PROOF)。

元组的元素是布尔值。如果值为 True,则该意图支持该方向。

intent_supported: dict[int, tuple[bool, bool, bool]] | None

返回所有支持的意图和方向的字典。

该字典以意图为索引(ImageCms.Intent.ABSOLUTE_COLORIMETRICImageCms.Intent.PERCEPTUALImageCms.Intent.RELATIVE_COLORIMETRICImageCms.Intent.SATURATION)。

这些值是以方向为索引的 3 元组(ImageCms.Direction.INPUTImageCms.Direction.OUTPUTImageCms.Direction.PROOF)。

元组的元素是布尔值。如果值为 True,则该意图支持该方向。

类中定义了一个函数

is_intent_supported(intent: int, direction: int, /)

返回该意图是否支持给定方向。

请注意,您也可以使用 intent_supported 获取所有意图和方向的此信息。

参数:
  • intentImageCms.Intent.ABSOLUTE_COLORIMETRICImageCms.Intent.PERCEPTUALImageCms.Intent.RELATIVE_COLORIMETRICImageCms.Intent.SATURATION 中的一个。

  • directionImageCms.Direction.INPUTImageCms.Direction.OUTPUTImageCms.Direction.PROOF 中的一个

返回:

如果意图和方向受支持,则为布尔值。