ImageOps
模块¶
ImageOps
模块包含许多“现成”的图像处理操作。此模块有一些实验性,大多数操作仅适用于 L 和 RGB 图像。
在版本 1.1.3 中添加。
- PIL.ImageOps.autocontrast(image: Image, cutoff: float | tuple[float, float] = 0, ignore: int | Sequence[int] | None = None, mask: Image | None = None, preserve_tone: bool = False) Image [source]¶
最大化(归一化)图像对比度。此函数计算输入图像(或掩码区域)的直方图,从直方图中移除
cutoff
百分比的最亮和最暗像素,并将图像重新映射,使最暗像素变为黑色(0),最亮像素变为白色(255)。- 参数::
image – 要处理的图像。
cutoff – 从低端和高端直方图中剪切的百分比。可以是 (low, high) 元组,也可以是表示两端的单个数字。
ignore – 背景像素值(如果不需要背景,则使用 None)。
mask – 用于对比度操作的直方图是使用掩码内的像素计算的。如果未提供掩码,则使用整个图像进行直方图计算。
preserve_tone –
以 Photoshop 风格的自动对比度保留图像色调。
在版本 8.2.0 中添加。
- 返回值::
一张图像。
- PIL.ImageOps.colorize(image: Image, black: str | tuple[int, ...], white: str | tuple[int, ...], mid: str | int | tuple[int, ...] | None = None, blackpoint: int = 0, whitepoint: int = 255, midpoint: int = 127) Image [source]¶
将灰度图像着色。此函数计算一个色带,将源图像中的所有黑色像素映射到第一个颜色,将所有白色像素映射到第二个颜色。如果指定了
mid
,则使用三色映射。black
和white
参数应为 RGB 元组或颜色名称;可选地,您也可以通过指定mid
来使用三色映射。可以指定任何颜色的映射位置(例如blackpoint
),其中这些参数是对应颜色应映射到的整数值。这些参数必须具有逻辑顺序,使得blackpoint <= midpoint <= whitepoint
(如果指定了mid
)。- 参数::
image – 要着色的图像。
black – 用于黑色输入像素的颜色。
white – 用于白色输入像素的颜色。
mid – 用于中间色输入像素的颜色。
blackpoint – 黑色映射的整数值 [0, 255]。
whitepoint – 白色映射的整数值 [0, 255]。
midpoint – 中间色映射的整数值 [0, 255]。
- 返回值::
一张图像。
- PIL.ImageOps.crop(image: Image, border: int = 0) Image [source]¶
从图像中去除边框。从所有四边去除相同数量的像素。此函数适用于所有图像模式。
另请参阅
- 参数::
image – 要裁剪的图像。
border – 要去除的像素数量。
- 返回值::
一张图像。
- PIL.ImageOps.scale(image: Image, factor: float, resample: int = Resampling.BICUBIC) Image [source]¶
返回按参数中给定的特定因子重新缩放的图像。大于 1 的因子会扩展图像,0 到 1 之间的因子会压缩图像。
- class PIL.ImageOps.SupportsGetMesh(*args, **kwargs)[source]¶
Bases:
Protocol
支持
getmesh
方法的对象,该方法以图像作为参数,并返回一个元组列表。每个元组包含两个元组,源框作为 4 个整数的元组,以及最终四边形的 8 个整数的元组,按左上、左下、右下、右上的顺序排列。
- PIL.ImageOps.deform(image: Image, deformer: SupportsGetMesh, resample: int = Resampling.BILINEAR) Image [source]¶
变形图像。
- 参数::
image – 要变形的图像。
deformer – 变形器对象。任何实现了
getmesh
方法的对象都可以使用。resample – 可选的重采样过滤器。与 PIL.Image.transform 函数中可能的相同值。
- 返回值::
一张图像。
- PIL.ImageOps.equalize(image: Image, mask: Image | None = None) Image [source]¶
均衡图像直方图。该函数对输入图像应用非线性映射,以在输出图像中创建灰度值的均匀分布。
- 参数::
image – 要均衡的图像。
mask – 可选的掩码。如果给出,则仅将掩码选择的像素包含在分析中。
- 返回值::
一张图像。
- PIL.ImageOps.expand(image: Image, border: int | tuple[int, ...] = 0, fill: str | int | tuple[int, ...] = 0) Image [source]¶
在图像周围添加边框。
- 参数::
image – 要扩展的图像。
border – 边框宽度,以像素为单位。
fill – 像素填充值(颜色值)。默认值为 0(黑色)。
- 返回值::
一张图像。
- PIL.ImageOps.posterize(image: Image, bits: int) Image [source]¶
减少每个颜色通道的位数。
- 参数::
image – 要进行色调分离的图像。
bits – 每个通道要保留的位数(1-8)。
- 返回值::
一张图像。
- PIL.ImageOps.solarize(image: Image, threshold: int = 128) Image [source]¶
反转高于阈值的像素值。
- 参数::
image – 要进行日晒的图像。
threshold – 所有高于此灰度级的像素都将被反转。
- 返回值::
一张图像。
- PIL.ImageOps.exif_transpose(image: Image, *, in_place: bool = False) Image | None [source]¶
如果图像具有 EXIF 方向标签(除了 1 之外),则相应地转置图像,并删除方向数据。
- 参数::
image – 要转置的图像。
in_place – 布尔值。仅限关键字参数。如果为
True
,则会就地修改原始图像,并返回None
。如果为False
(默认值),则将返回一个新的Image
对象,其中已应用转置。如果没有转置,将返回图像的副本。
相对于给定大小调整大小¶
from PIL import Image, ImageOps
size = (100, 150)
with Image.open("Tests/images/hopper.webp") as im:
ImageOps.contain(im, size).save("imageops_contain.webp")
ImageOps.cover(im, size).save("imageops_cover.webp")
ImageOps.fit(im, size).save("imageops_fit.webp")
ImageOps.pad(im, size, color="#f00").save("imageops_pad.webp")
# thumbnail() can also be used,
# but will modify the image object in place
im.thumbnail(size)
im.save("image_thumbnail.webp")
给定大小 |
|
|
|
|
|
结果图像 |
|||||
结果大小 |
|
|
|
|
|
- PIL.ImageOps.contain(image: Image, size: tuple[int, int], method: int = Resampling.BICUBIC) Image [source]¶
返回图像的调整大小版本,设置为请求大小内的最大宽度和高度,同时保持原始纵横比。
- PIL.ImageOps.cover(image: Image, size: tuple[int, int], method: int = Resampling.BICUBIC) Image [source]¶
返回图像的调整大小版本,以便覆盖请求的大小,同时保持原始纵横比。
- PIL.ImageOps.fit(image: Image, size: tuple[int, int], method: int = Resampling.BICUBIC, bleed: float = 0.0, centering: tuple[float, float] = (0.5, 0.5)) Image [source]¶
返回图像的调整大小和裁剪版本,裁剪为请求的纵横比和大小。
此函数由 Kevin Cazabon 贡献。
- 参数::
image – 要调整大小和裁剪的图像。
size – 请求的输出大小(以像素为单位),以 (宽度, 高度) 元组的形式给出。
bleed – 从所有四个边缘移除图像外部的边框。该值是一个小数百分比(对一个百分比使用 0.01)。默认值为 0(无边框)。不能大于或等于 0.5。
centering – 控制裁剪位置。使用 (0.5, 0.5) 进行中心裁剪(例如,如果裁剪宽度,从左侧切掉 50%,因此从右侧切掉 50%)。(0.0, 0.0) 将从左上角裁剪(即,如果裁剪宽度,从右侧切掉所有裁剪,如果裁剪高度,从底部切掉所有裁剪)。(1.0, 0.0) 将从左下角裁剪,等等。(即,如果裁剪宽度,从左侧切掉所有裁剪,如果裁剪高度,从顶部不切掉任何裁剪,因此从底部切掉所有裁剪)。
- 返回值::
一张图像。