ImageChops(“通道操作”)模块

ImageChops 模块包含许多算术图像操作,称为通道操作(“chops”)。这些操作可用于各种目的,包括特殊效果、图像合成、算法绘画等等。

有关更多预制操作,请参阅 ImageOps.

目前,大多数通道操作仅针对 8 位图像(例如“L”和“RGB”)实现。

函数

大多数通道操作接受一个或两个图像参数,并返回一个新图像。除非另有说明,否则通道操作的结果始终被剪切到 0 到 MAX 的范围(对于此模块中支持的所有模式,MAX 为 255)。

PIL.ImageChops.add(image1: Image, image2: Image, scale: float = 1.0, offset: float = 0) Image[source]

将两个图像相加,将结果除以 scale 并加上 offset。如果省略,scale 默认为 1.0,offset 默认为 0.0。

out = ((image1 + image2) / scale + offset)
返回值类型:

Image

PIL.ImageChops.add_modulo(image1: Image, image2: Image) Image[source]

将两个图像相加,不剪切结果。

out = ((image1 + image2) % MAX)
返回值类型:

Image

PIL.ImageChops.blend(image1: Image, image2: Image, alpha: float) Image[source]

使用恒定透明度权重混合图像。它是 PIL.Image.blend() 的别名。

返回值类型:

Image

PIL.ImageChops.composite(image1: Image, image2: Image, mask: Image) Image[source]

使用透明度蒙版创建合成图像。它是 PIL.Image.composite() 的别名。

返回值类型:

Image

PIL.ImageChops.constant(image: Image, value: int) Image[source]

用给定的灰度级填充通道。

返回值类型:

Image

PIL.ImageChops.darker(image1: Image, image2: Image) Image[source]

逐像素比较两个图像,并返回一个包含较暗值的新图像。

out = min(image1, image2)
返回值类型:

Image

PIL.ImageChops.difference(image1: Image, image2: Image) Image[source]

返回两个图像逐像素差的绝对值。

out = abs(image1 - image2)
返回值类型:

Image

PIL.ImageChops.duplicate(image: Image) Image[source]

复制一个通道。等效于 PIL.Image.Image.copy().

返回值类型:

Image

PIL.ImageChops.invert(image: Image) Image[source]

反转图像(通道)。

out = MAX - image
返回值类型:

Image

PIL.ImageChops.lighter(image1: Image, image2: Image) Image[source]

逐像素比较两个图像,并返回一个包含较亮值的新图像。

out = max(image1, image2)
返回值类型:

Image

PIL.ImageChops.logical_and(image1: Image, image2: Image) Image[source]

两个图像之间的逻辑 AND 操作。

两个图像必须都为“1”模式。如果您想对非“1”模式的图像执行逻辑 AND 操作,请尝试使用 multiply(),使用黑白蒙版作为第二个图像。

out = ((image1 and image2) % MAX)
返回值类型:

Image

PIL.ImageChops.logical_or(image1: Image, image2: Image) Image[source]

两个图像之间的逻辑 OR 操作。

两个图像必须都为“1”模式。

out = ((image1 or image2) % MAX)
返回值类型:

Image

PIL.ImageChops.logical_xor(image1: Image, image2: Image) Image[source]

两个图像之间的逻辑 XOR 操作。

两个图像必须都为“1”模式。

out = ((bool(image1) != bool(image2)) % MAX)
返回值类型:

Image

PIL.ImageChops.multiply(image1: Image, image2: Image) Image[source]

将两个图像叠加在一起。

如果将图像与纯黑色图像相乘,结果为黑色。如果与纯白色图像相乘,图像不会受到影响。

out = image1 * image2 / MAX
返回值类型:

Image

PIL.ImageChops.soft_light(image1: Image, image2: Image) Image[source]

使用柔光算法将两个图像叠加在一起

返回值类型:

Image

PIL.ImageChops.hard_light(image1: Image, image2: Image) Image[source]

使用强光算法将两个图像叠加在一起

返回值类型:

Image

PIL.ImageChops.overlay(image1: Image, image2: Image) Image[source]

使用叠加算法将两个图像叠加在一起

返回值类型:

Image

PIL.ImageChops.offset(image: Image, xoffset: int, yoffset: int | None = None) Image[source]

返回图像的副本,其中数据已根据给定的距离偏移。数据在边缘处环绕。如果省略了yoffset,则假定它等于xoffset

参数:
  • image – 输入图像。

  • xoffset – 水平距离。

  • yoffset – 垂直距离。如果省略,则两个距离都设置为相同的值。

返回值类型:

Image

PIL.ImageChops.screen(image1: Image, image2: Image) Image[source]

将两张反转的图像叠加在一起。

out = MAX - ((MAX - image1) * (MAX - image2) / MAX)
返回值类型:

Image

PIL.ImageChops.subtract(image1: Image, image2: Image, scale: float = 1.0, offset: float = 0) Image[source]

将两张图像相减,并将结果除以 scale 并加上 offset。如果省略,则 scale 默认为 1.0,offset 默认为 0.0。

out = ((image1 - image2) / scale + offset)
返回值类型:

Image

PIL.ImageChops.subtract_modulo(image1: Image, image2: Image) Image[source]

将两张图像相减,不裁剪结果。

out = ((image1 - image2) % MAX)
返回值类型:

Image