简介
本实验将指导你使用 Python 中的 Matplotlib 库从现有图像生成缩略图的过程。缩略图是图像的较小版本,可用于显示较大图像的预览。Matplotlib 依赖 Pillow 库来读取图像,并支持 Pillow 支持的所有格式。
虚拟机提示
虚拟机启动完成后,点击左上角切换到“笔记本”标签,以访问 Jupyter Notebook 进行练习。
有时,你可能需要等待几秒钟让 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作的验证无法自动化。
如果你在学习过程中遇到问题,请随时向 Labby 提问。课程结束后提供反馈,我们将立即为你解决问题。
安装所需库
首先,你需要安装所需的库。打开终端并输入以下命令来安装 Matplotlib 和 Pillow:
pip install matplotlib
pip install pillow
导入库
在这一步中,你将导入在上一步中安装的库。你需要分别从 argparse 和 pathlib 模块中导入 ArgumentParser 和 Path。此外,还要分别从 sys 和 matplotlib.image 模块中导入 sys 和 image 模块。
from argparse import ArgumentParser
from pathlib import Path
import sys
import matplotlib.image as image
解析参数
在这一步中,你将解析传递给程序的参数。你需要创建一个 ArgumentParser 对象,并添加一个名为 imagedir 的参数。此参数指定包含图像的目录的路径。你可以使用 type 参数来指定参数的数据类型。在这种情况下,参数应为 Path 类型。
parser = ArgumentParser(description="Build thumbnails of all images in a directory.")
parser.add_argument("imagedir", type=Path)
args = parser.parse_args()
验证目录
在这一步中,你将检查指定的目录是否存在。如果目录不存在,你将退出程序并打印一条错误消息。
if not args.imagedir.is_dir():
sys.exit(f"Could not find input directory {args.imagedir}")
创建输出目录
在这一步中,你将创建一个名为 thumbs 的目录,用于保存缩略图。如果该目录已经存在,则不会再次创建。
outdir = Path("thumbs")
outdir.mkdir(parents=True, exist_ok=True)
生成缩略图
在这一步中,你将为指定目录中的所有图像生成缩略图。你将使用一个 for 循环来遍历指定目录中所有具有 .png 扩展名的图像。对于每一张图像,你将生成一个缩略图并将其保存在 thumbs 目录中。
for path in args.imagedir.glob("*.png"):
outpath = outdir / path.name
fig = image.thumbnail(path, outpath, scale=0.15)
print(f"saved thumbnail of {path} to {outpath}")
总结
在本次实验中,你已经学会了如何使用 Python 中的 Matplotlib 从现有图像生成缩略图。你已经了解了如何导入库、解析参数、验证目录、创建输出目录以及生成缩略图。通过遵循本实验中的步骤,你可以轻松地为目录中的所有图像生成缩略图。