📜  Python PIL | ImageOps.fit() 方法(1)

📅  最后修改于: 2023-12-03 14:46:02.377000             🧑  作者: Mango

Python PIL | ImageOps.fit() 方法

简介

ImageOps 模块是PIL(Python Imaging Library)中的一个模块,提供了在图像处理中常见的一些操作。其中,ImageOps.fit() 这个方法可以用来调整图像的大小,并在调整图像大小时保留它的宽高比例。

方法定义

ImageOps.fit(image, size, method=0, bleed=0.0, centering=(0.5, 0.5))

参数

  • image:PIL Image 对象,需要调整大小的图像
  • size:二元素元组,调整后的大小,格式为 (宽度, 高度)
  • method:调整图像大小的方法。可选取值为 Image.NEAREST, Image.BOX, Image.BILINEAR, Image.HAMMING, Image.BICUBIC, Image.LANCZOS,其中默认值为 Image.BICUBIC
  • bleed:默认为 0.0,如果设置为非零值,则在调整大小时将为图像周围留出一定的“出血”范围,范围大小为调整后的大小的一定比例
  • centering:二元素元组,指定图像在调整后的大小中的位置,格式为 (横向位置, 纵向位置),范围为 0.0 到 1.0 之间。

返回值

该方法返回 PIL Image 对象,表示调整大小后的图像。

实例

以下是一个使用 ImageOps.fit() 方法调整图像大小的实例。假设我们有如下的一张图片:

test.jpg

现在我们使用 ImageOps.fit() 方法将其调整为 400 x 400 的大小。

from PIL import Image, ImageOps

image = Image.open("test.jpg")
image = ImageOps.fit(image, (400, 400))
image.show()

运行该程序后,我们将得到如下图像:

result.png

我们可以看到,使用 ImageOps.fit() 方法调整后的图像大小为 400x400,且保留了原图的宽高比例。如果我们需要将其在调整后的画布中向右移动 20% 并向下移动 30%,可以使用如下代码:

from PIL import Image, ImageOps

image = Image.open("test.jpg")
image = ImageOps.fit(image, (400, 400), centering=(0.2, 0.3))
image.show()

调整后的图像如下所示:

result2.png

总结

使用 ImageOps.fit() 方法可以方便地调整图像大小,并保留图像的宽高比例。通过指定 centering 参数可以控制图像在调整后的画布中的位置。需要注意的是,调整后的图像大小可能由于比例变化而略有不同,因此在调整图像大小时可能需要对 bleed 参数进行设置以获得更好的效果。