1. 加载和保存图片
在 Pillow 中加载图片需要使用 Image
类。
加载后,图片可以被转换并保存为不同格式。让我们看看加载和保存图片的一些基本操作。
加载图片
要加载图片,请使用 Image.open()
方法。
它可以打开任何受支持格式的图片。
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()
方法允许设置输出文件的名称和格式。
# 保存为其他格式
image.save("example.png") # 保存为 PNG 格式
你还可以通过调整图片的质量来减少文件大小,这在处理 JPEG 格式的图片时特别有用。
# 修改质量后保存
image.save("compressed_example.jpg", quality=85) # quality 值在 1 到 95 之间
2. 调整图片尺寸
调整尺寸是处理图片时最常见的任务之一。Pillow 提供了几种调整尺寸的方法,包括设置特定宽度和高度、按比例调整和创建缩略图。
使用 resize()
方法调整尺寸
resize()
方法允许指定图片的精确尺寸(宽度和高度),但如果新尺寸未保持原始比例,图片可能会失真。
# 设置新尺寸
new_size = (800, 600)
resized_image = image.resize(new_size)
# 保存调整后的图片
resized_image.save("resized_example.jpg")
在这个示例中,图片的尺寸被调整为 800x600 像素,并保存为新文件。如果原始图片有不同比例,它会被拉伸或压缩以匹配新尺寸。
使用 thumbnail()
方法按比例调整尺寸
若要调整图片尺寸并保持比例,请使用 thumbnail()
方法。此方法会自动缩小图片以适应指定的尺寸,同时保持原始比例。非常适合创建图片缩略图。
# 创建最大尺寸为 400x400 像素的缩略图
image.thumbnail((400, 400))
# 保存缩略图
image.save("thumbnail_example.jpg")
thumbnail()
方法会直接修改原始 image
对象。
执行 thumbnail()
后,Pillow 会缩小图片,使其尺寸不超过 400x400 像素,同时保持比例。
使用 ImageOps.fit()
方法按比例裁剪并调整大小
有时候需要调整图片尺寸以完全符合指定的尺寸,同时保持比例并裁剪多余部分。
在这种情况下,可以使用 ImageOps.fit()
方法。
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. 完整代码实例
以下是一个示例代码,结合了加载、调整尺寸和保存图片的方法。
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")
调整尺寸方法说明
-
resize()
: 允许设置任意尺寸,但如果新尺寸不符合原始比例,图片会失真。 -
thumbnail()
: 按比例调整图片尺寸。常用于创建缩略图或缩小大图片。 -
ImageOps.fit()
: 将图片裁剪并调整至所需尺寸,避免比例失真。
4. 提示:
调整图片尺寸的实际应用
- 优化网站图片: 大图片可能会拖慢网页加载速度,因此需要通过减少文件大小来进行优化,而不影响质量。
-
创建图片缩略图: 使用
thumbnail()
方法快速生成缩略图以用于预览显示。 -
调整图片满足特定尺寸: 当需要将图片调整为固定尺寸(例如头像或个人资料),
ImageOps.fit()
方法可裁剪并缩放图片以满足这些要求。
选择方法的建议
使用 resize()
方法,当需要精确指定图片的宽度和高度,而不在乎比例是否改变时。
使用 thumbnail()
方法,当需要按比例缩小图片或创建缩略图时。
使用 ImageOps.fit()
,当需要特定尺寸的图片且不希望变形时。此方法裁剪多余部分,非常适合调整图片以适应指定框架。
GO TO FULL VERSION