063. 编写一个函数,实现简单的图像处理功能,旋转、缩放
在 Python 中,可以使用 Pillow
库(PIL 的一个分支)来实现图像处理功能,包括旋转和缩放。以下是一个示例代码,展示如何编写一个函数来实现图像的旋转和缩放功能。
安装 Pillow 库
在开始之前,请确保你已经安装了 Pillow
库。如果没有安装,可以通过以下命令安装:
pip install pillow
示例代码
以下代码定义了一个函数 process_image
,支持加载图像、旋转和缩放操作,并保存处理后的图像。
from PIL import Image
def process_image(input_path, output_path, rotate_angle=0, scale_factor=1.0):
"""
简单的图像处理函数,支持旋转和缩放
:param input_path: 输入图像的路径
:param output_path: 输出图像的路径
:param rotate_angle: 旋转角度(顺时针方向),默认为 0
:param scale_factor: 缩放比例,大于 1 放大,小于 1 缩小,默认为 1.0
"""
try:
# 打开图像文件
with Image.open(input_path) as img:
# 旋转图像
if rotate_angle != 0:
img = img.rotate(rotate_angle, expand=True) # expand=True 会调整画布大小以适应旋转后的图像
# 缩放图像
if scale_factor != 1.0:
new_size = (int(img.width * scale_factor), int(img.height * scale_factor))
img = img.resize(new_size, Image.ANTIALIAS) # 使用高质量的缩放算法
# 保存处理后的图像
img.save(output_path)
print(f"图像处理完成,已保存到 {output_path}")
except Exception as e:
print(f"图像处理失败:{e}")
# 示例用法
if __name__ == "__main__":
input_path = "input.jpg" # 替换为你的输入图像路径
output_path = "output.jpg" # 替换为你的输出图像路径
rotate_angle = 45 # 旋转角度
scale_factor = 0.5 # 缩放比例
process_image(input_path, output_path, rotate_angle, scale_factor)
代码说明
打开图像:
-
使用
Image.open()
打开图像文件。 -
使用
with
语句确保图像文件在处理完成后正确关闭。
旋转图像: 使用 img.rotate()
方法旋转图像。expand=True
参数会调整画布大小以适应旋转后的图像,避免裁剪。
缩放图像:使用 img.resize()
方法缩放图像。Image.ANTIALIAS
是一个高质量的缩放算法,可以确保图像在缩放时保持较好的质量。
保存图像:使用 img.save()
方法将处理后的图像保存到指定路径。
异常处理:使用 try-except
捕获可能的异常,例如文件不存在、格式错误等。
示例输出
假设输入图像为 input.jpg
,旋转角度为 45 度,缩放比例为 0.5,处理后的图像将保存为 output.jpg
,并打印以下信息:
图像处理完成,已保存到 output.jpg
扩展功能
如果你需要更多图像处理功能,Pillow
库还支持以下操作:
- 裁剪图像:
cropped_img = img.crop((left, upper, right, lower))
- 调整亮度、对比度等:
from PIL import ImageEnhance
enhancer = ImageEnhance.Brightness(img)
img = enhancer.enhance(factor) # factor > 1 增加亮度,factor < 1 降低亮度
- 应用滤镜:
from PIL import ImageFilter
img = img.filter(ImageFilter.BLUR) # 模糊滤镜
视频讲解
BiliBili: 视睿网络-哔哩哔哩视频 (bilibili.com)