1261 字
6 分钟
ImageConverter开发笔记及更新日志

ImageConverter开发笔记及更新日志
版本 v1.0 (初始版本)
- 项目目标:
- 创建一个能快速将文件夹内所有WEBP图片转换为PNG格式的Python脚本。
- 目标用户为不熟悉编程的小白,交互应尽可能简单(如拖放)。
- 核心技术选型:
- 图像处理: 选用
Pillow
(PIL Fork) 库,它是Python图像处理的事实标准,支持WEBP的读取和PNG的写入。 - 文件遍历: 使用
os.walk()
,因为相比os.listdir()
,它能递归地遍历所有子文件夹,功能更强大、更彻底。 - 接收输入: 利用
sys.argv
来捕获从命令行传入的参数。这使得脚本能接收拖放操作传递过来的文件夹路径。 - 跨平台兼容: 创建
.bat
启动器来解决Windows上拖放.py
文件默认是编辑而不是执行的问题。同时,脚本核心逻辑不依赖特定系统,也能在macOS/Linux上通过命令行运行。
- 图像处理: 选用
- 设计抉择:
- 在主循环中采用
try...except
结构,确保即使个别图片文件损坏或无法转换,脚本也不会中途崩溃。 - 在脚本末尾加入
input()
,防止在Windows上直接双击或执行时,命令行窗口一闪而过,让用户能看到执行结果。
- 在主循环中采用
- 局限性:
- 处理大量文件时,用户无法得知当前进度,只能等待。
- 转换后的WEBP源文件仍保留在原地,需要用户手动清理。
版本 v2.0 (增强版)
- 项目目标:
- 在v1.0的基础上提升用户体验和实用性。
- 增加进度反馈机制。
- 增加自动化清理源文件的选项。
- 新依赖引入:
tqdm
: 一个功能强大且极为易用的进度条库。选择它是因为其“开箱即用”的特性,只需将迭代器包装一下即可生成美观的进度条,且能与print
等标准输出很好地共存(通过tqdm.write
)。
- 功能实现 - 进度条:
- 逻辑重构: 原v1.0是一边遍历一边转换的“单通道”模式。为了实现准确的进度条,必须预先知道需要处理的总文件数。因此,逻辑重构为“双通道”模式:
- 第一通道(扫描): 先用
os.walk()
完整遍历一次目录树,将所有“需要被转换”(即没有对应PNG文件)的WEBP文件路径搜集到一个列表files_to_convert
中。 - 第二通道(处理): 使用
tqdm(files_to_convert)
来包装这个列表进行迭代处理。tqdm
会自动获取列表长度作为总数,从而生成进度条。
- 第一通道(扫描): 先用
- 体验优化: 在
tqdm
循环中,使用pbar.set_description()
方法动态显示当前正在处理的文件名,让进度反馈更具体。
- 逻辑重构: 原v1.0是一边遍历一边转换的“单通道”模式。为了实现准确的进度条,必须预先知道需要处理的总文件数。因此,逻辑重构为“双通道”模式:
- 功能实现 - 可选删除:
- 交互设计: 在脚本开始执行时,通过
input()
函数向用户提问,获取明确的意图 (yes/no
)。这是一个简单直接的交互方式。增加了循环判断和strip()
/lower()
来处理用户可能的多样化输入,增强了健壮性。 - 安全机制:
- 数据安全:
os.remove(webp_path)
删除操作被严格放置在img.save()
之后,并且同在try
代码块内。这确保了只有在图片成功保存为PNG后,对应的源文件才会被删除,杜绝了因转换失败而导致数据丢失的风险。 - 操作警告: 当用户选择“是”时,会打印一个醒目的警告信息,并提供一个5秒的倒计时,给予用户中止操作(通过
Ctrl+C
)的最后机会,防止误操作。
- 数据安全:
- 交互设计: 在脚本开始执行时,通过
- 环境管理:
- 在代码的开头使用
try...except ImportError
来捕获tqdm
的导入错误。如果用户没有安装,会打印清晰的安装提示并退出,引导用户正确配置虚拟环境。
- 在代码的开头使用
v1.0 - 初始版本
[新增]
核心功能:转换指定文件夹内的WEBP图片为PNG格式。[新增]
支持递归处理,自动扫描所有子文件夹。[新增]
支持通过拖放文件夹到.bat
启动器上来执行操作。[变更]
输出结果会显示成功或失败的日志。
v2.0 - 增强版
[新增]
进度条功能:在处理文件时会显示一个动态更新的进度条,展示总体进度、处理速度和当前文件名。[新增]
可选删除源文件:脚本启动时会询问用户,是否在转换成功后自动删除原始的.webp
文件。[新增]
删除操作前的5秒倒计时警告,给予用户取消操作的机会,防止误删。[变更]
优化了文件扫描逻辑,现在会跳过已经存在对应PNG文件的图片,避免重复工作。[变更]
重构了代码结构,将文件扫描和文件处理分为两个阶段,以支持准确的进度统计。[修复]
引入了对新依赖tqdm
的检查,如果未安装会给出明确的安装提示。
ImageConverter开发笔记及更新日志
https://455777.xyz/posts/imageconverter开发笔记及更新日志/