Pillow - 调整图像大小



在 Pillow 库中调整图像大小包括更改图像的尺寸,即宽度和高度。此操作可用于使图像更大或更小,并且可以用于各种目的,例如准备用于网站上显示的图像、减小文件大小或生成缩略图。

使用 resize() 方法调整图像大小

在 Pillow 中,resize() 方法用于更改图像的尺寸。此函数允许我们以以下方式调整图像大小。

  • 绝对尺寸 - 我们可以指定图像应调整到的新宽度和高度(以像素为单位)。

  • 保持纵横比 - 如果我们只指定一个维度(宽度或高度),则 Pillow 可以自动计算另一个维度以保持图像的纵横比。

  • 缩放 - 我们可以通过缩放因子调整图像大小,该缩放因子在保持纵横比的同时统一调整宽度和高度。

以下是 resize() 方法的基本语法 -

PIL.Image.resize(size, resample=3)

其中,

  • size - 这可以是指定新宽度和高度(以像素为单位)的元组,即指定新大小(宽度或高度)的单个整数,或指定缩放因子的浮点数。

  • resample(可选) - 默认值为 3,对应于抗锯齿高质量滤镜。我们可以从各种重采样滤镜中选择,例如 Image.NEAREST、Image.BOX、Image.BILINEAR、Image.HAMMING、Image.BICUBIC、Image.LANCZOS 等。

以下是本章所有示例中使用的输入图像。

flower

示例

在此示例中,我们使用 resize() 函数通过传递元组作为输入参数来调整图像的宽度和高度。

from PIL import Image

#Open an image
image = Image.open("Images/rose.jpg")

#Resize to specific dimensions (e.g., 300x200 pixels)
new_size = (300, 200)
resized_image = image.resize(new_size)

#Display resized image
resized_image.show()

输出

flower image

示例

在此示例中,我们通过保持原始输入图像的相同纵横比来调整图像大小。

from PIL import Image

#Open an image
image = Image.open("Images/rose.jpg")

#Resize by maintaining aspect ratio (e.g., specify the width)
new_width = 200
aspect_ratio_preserved = image.resize((new_width, int(image.height * (new_width / image.width))))
aspect_ratio_preserved.show()

输出

flower resized

示例

在此示例中,我们通过缩放因子调整图像大小。

from PIL import Image

#Open an image
image = Image.open("Images/rose.jpg")

#Scale the image by a factor (e.g., 10% of the original size)
scaling_factor = 0.1
scaled_image = image.resize((int(image.width * scaling_factor), int(image.height * scaling_factor)))
scaled_image.show()

输出

flower output
广告