Python Pillow 简明教程

Pillow - Resizing an Image

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

Resizing an Image using the resize() method

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

  1. Absolute Dimensions − 我们可以指定应调整图像大小的新宽度和高度(以像素为单位)。

  2. Maintaining Aspect Ratio - 如果我们只指定一个尺寸(宽度或高度),Pillow 可以自动计算另一个尺寸来维持图像的长宽比。

  3. Scaling - 我们可以按比例因子对图像进行大小调整,该比例因子将同时调整宽度和高度,同时保持长宽比。

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

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

其中,

  1. size - 这可以是指定新宽高(以像素为单位)的元组,即一个指定新尺寸(宽度或高度)的整数,或一个指定缩放因子的浮点数。

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

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

flower

Example

在这个示例中,我们使用 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

Example

在该示例中,我们保持原始输入图像的长宽比来调整图像大小。

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

Example

在这个示例中,我们按缩放因子调整图像的大孝。

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