CodeGym /Java 课程 /Python SELF ZH /调整图片大小

调整图片大小

Python SELF ZH
第 45 级 , 课程 1
可用

1. 加载和保存图片

在 Pillow 中加载图片需要使用 Image 类。 加载后,图片可以被转换并保存为不同格式。让我们看看加载和保存图片的一些基本操作。

加载图片

要加载图片,请使用 Image.open() 方法。 它可以打开任何受支持格式的图片。

Python

from PIL import Image

# 打开图片
image = Image.open("example.jpg")

# 打印文件信息
print(image.format)  # 图片格式,例如 JPEG 或 PNG
print(image.size)    # 图片尺寸 (宽度, 高度)
print(image.mode)    # 颜色模式,例如 RGB 或 Grayscale

此代码加载 example.jpg 图片,并输出其主要特性:格式、尺寸和颜色模式。如果图片不在相同文件夹下,请指定文件的完整路径。

保存图片

加载和修改图片后,你可以将其保存为任何其他支持的格式,只需在文件名中指定所需的扩展名即可。save() 方法允许设置输出文件的名称和格式。

Python

# 保存为其他格式
image.save("example.png")  # 保存为 PNG 格式

你还可以通过调整图片的质量来减少文件大小,这在处理 JPEG 格式的图片时特别有用。

Python

# 修改质量后保存
image.save("compressed_example.jpg", quality=85)  # quality 值在 1 到 95 之间

2. 调整图片尺寸

调整尺寸是处理图片时最常见的任务之一。Pillow 提供了几种调整尺寸的方法,包括设置特定宽度和高度、按比例调整和创建缩略图。

使用 resize() 方法调整尺寸

resize() 方法允许指定图片的精确尺寸(宽度和高度),但如果新尺寸未保持原始比例,图片可能会失真。

Python

# 设置新尺寸
new_size = (800, 600)
resized_image = image.resize(new_size)

# 保存调整后的图片
resized_image.save("resized_example.jpg")

在这个示例中,图片的尺寸被调整为 800x600 像素,并保存为新文件。如果原始图片有不同比例,它会被拉伸或压缩以匹配新尺寸。

使用 thumbnail() 方法按比例调整尺寸

若要调整图片尺寸并保持比例,请使用 thumbnail() 方法。此方法会自动缩小图片以适应指定的尺寸,同时保持原始比例。非常适合创建图片缩略图。

Python

# 创建最大尺寸为 400x400 像素的缩略图
image.thumbnail((400, 400))

# 保存缩略图
image.save("thumbnail_example.jpg")

thumbnail() 方法会直接修改原始 image 对象。 执行 thumbnail() 后,Pillow 会缩小图片,使其尺寸不超过 400x400 像素,同时保持比例。

使用 ImageOps.fit() 方法按比例裁剪并调整大小

有时候需要调整图片尺寸以完全符合指定的尺寸,同时保持比例并裁剪多余部分。 在这种情况下,可以使用 ImageOps.fit() 方法。

Python

from PIL import ImageOps

# 设置新尺寸
target_size = (400, 400)
fitted_image = ImageOps.fit(image, target_size, method=Image.LANCZOS)

# 保存裁剪后的图片
fitted_image.save("fitted_example.jpg")

ImageOps.fit() 方法会自动裁剪图片,使其符合指定的尺寸而无失真。 例如,如果原始图片是矩形,方法会裁剪边缘部分,使其变为正方形,并调整为 400x400 像素大小。

3. 完整代码实例

以下是一个示例代码,结合了加载、调整尺寸和保存图片的方法。

Python

from PIL import Image, ImageOps

# 打开图片
image = Image.open("example.jpg")

# 调整尺寸,不保持比例
resized_image = image.resize((800, 600))
resized_image.save("resized_example.jpg")

# 比例缩小图片
image.thumbnail((400, 400))
image.save("thumbnail_example.jpg")

# 裁剪并调整至所需尺寸
fitted_image = ImageOps.fit(image, (400, 400), method=Image.LANCZOS)
fitted_image.save("fitted_example.jpg")

调整尺寸方法说明

  1. resize(): 允许设置任意尺寸,但如果新尺寸不符合原始比例,图片会失真。
  2. thumbnail(): 按比例调整图片尺寸。常用于创建缩略图或缩小大图片。
  3. ImageOps.fit(): 将图片裁剪并调整至所需尺寸,避免比例失真。

4. 提示:

调整图片尺寸的实际应用

  1. 优化网站图片: 大图片可能会拖慢网页加载速度,因此需要通过减少文件大小来进行优化,而不影响质量。
  2. 创建图片缩略图: 使用 thumbnail() 方法快速生成缩略图以用于预览显示。
  3. 调整图片满足特定尺寸: 当需要将图片调整为固定尺寸(例如头像或个人资料),ImageOps.fit() 方法可裁剪并缩放图片以满足这些要求。

选择方法的建议

使用 resize() 方法,当需要精确指定图片的宽度和高度,而不在乎比例是否改变时。

使用 thumbnail() 方法,当需要按比例缩小图片或创建缩略图时。

使用 ImageOps.fit(),当需要特定尺寸的图片且不希望变形时。此方法裁剪多余部分,非常适合调整图片以适应指定框架。

评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION