生成命令行版本image-converter
本文生成带参数运行的命令行版本image-converter。
提问:如果生成命令行exe程序,带三个参数运行,目录A,目录B,转换方式(png,webp,jpg等,默认webp,可省略),怎么做?

主代码
import os
import sys
import argparse
from PIL import Image
def convert_images(src_dir, dest_dir, output_format='webp'):
"""
核心转换函数
:param src_dir: 源目录
:param dest_dir: 目标目录
:param output_format: 输出格式 (webp/jpg/png)
"""
if not os.path.exists(src_dir):
print(f"错误:源目录不存在 {src_dir}")
return False
os.makedirs(dest_dir, exist_ok=True)
supported_formats = ['webp', 'jpg', 'jpeg', 'png']
if output_format.lower() not in supported_formats:
print(f"错误:不支持的格式 {output_format}")
return False
count = 0
for filename in os.listdir(src_dir):
if not filename.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp', '.gif', '.tiff', '.webp')):
continue
try:
src_path = os.path.join(src_dir, filename)
dest_path = os.path.join(dest_dir, f"{os.path.splitext(filename)[0]}.{output_format}")
with Image.open(src_path) as img:
# 透明背景处理
if img.mode in ('RGBA', 'LA') and output_format in ('jpg', 'jpeg'):
background = Image.new('RGB', img.size, (255, 255, 255))
background.paste(img, mask=img.split()[-1])
img = background
# 高质量保存参数
save_args = {}
if output_format == 'webp':
save_args = {'quality': 100, 'method': 6}
elif output_format in ('jpg', 'jpeg'):
save_args = {'quality': 95}
img.save(dest_path, **save_args)
count += 1
print(f"转换成功: {filename} -> {os.path.basename(dest_path)}")
except Exception as e:
print(f"转换失败 {filename}: {str(e)}")
print(f"\n转换完成! 共处理 {count} 个文件")
return True
def main():
# 设置命令行参数解析
parser = argparse.ArgumentParser(
description="图片格式转换工具 (命令行版)",
formatter_class=argparse.RawTextHelpFormatter
)
parser.add_argument('src_dir', help="源图片目录路径")
parser.add_argument('dest_dir', help="输出目录路径")
parser.add_argument('-f', '--format',
choices=['webp', 'jpg', 'png'],
default='webp',
help="输出格式 (默认: webp)")
# 解析参数
args = parser.parse_args()
# 执行转换
convert_images(args.src_dir, args.dest_dir, args.format)
if __name__ == "__main__":
main()
保存为image_converter_cli.py。
生成exe
pip install pyinstaller pillow
pyinstaller --onefile image_converter_cli.py
生成的 dist/image_converter_cli.exe 文件8.8M。
用法
- 基本用法(默认转webp)
image_converter_cli.exe 输入目录 输出目录 - 指定输出格式
image_converter_cli.exe 输入目录 输出目录 -f jpg - 带空格的路径需要用引号
image_converter_cli.exe "C:\my photos" "D:\converted" -f png

在windows上,路径使用 \ 和 / 效果一样,有空格的路径需加引号。