使用 Matplotlib 生成图像缩略图

PythonPythonBeginner
立即练习

This tutorial is from open-source community. Access the source code

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

本实验将指导你使用 Python 中的 Matplotlib 库从现有图像生成缩略图的过程。缩略图是图像的较小版本,可用于显示较大图像的预览。Matplotlib 依赖 Pillow 库来读取图像,并支持 Pillow 支持的所有格式。

虚拟机提示

虚拟机启动完成后,点击左上角切换到“笔记本”标签,以访问 Jupyter Notebook 进行练习。

有时,你可能需要等待几秒钟让 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作的验证无法自动化。

如果你在学习过程中遇到问题,请随时向 Labby 提问。课程结束后提供反馈,我们将立即为你解决问题。

安装所需库

首先,你需要安装所需的库。打开终端并输入以下命令来安装 Matplotlib 和 Pillow:

pip install matplotlib
pip install pillow

导入库

在这一步中,你将导入在上一步中安装的库。你需要分别从 argparsepathlib 模块中导入 ArgumentParserPath。此外,还要分别从 sysmatplotlib.image 模块中导入 sysimage 模块。

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从现有图像生成缩略图。你已经了解了如何导入库、解析参数、验证目录、创建输出目录以及生成缩略图。通过遵循本实验中的步骤,你可以轻松地为目录中的所有图像生成缩略图。