由于 pyvips 支持并行处理,运行速度快,且无需将整张图像保存在内存中。
- 旋转翻转:右旋、左旋、左右翻转、上下翻转。
- 容错率:右、左、左右、上下
- 智能缩放:支持多种尺寸写法。
- 批量处理:一键处理当前目录所有图片,自动创建输出文件夹。
- 防覆盖:文件名冲突时自动添加序号,同时避免无限重复添加的错误。
git clone https://github.com/classronin/pyvips-im
uv vinv --python 3.15t
uv pip install pyvips
- 下载 Win x64 压缩包 vips-dev-x64-all-8.18.2.zip
解压并重命名
vips文件夹
cli/
├── cli.py # 命令行入口,主逻辑
├── operations.py # 图像处理操作(vips调用)
├── utils.py # 工具函数、常量
└── vips/ # 依赖文件夹
cli.bat # Windows批处理脚本
vips.exe -l
vips.exe --help
vipsedit.exe --help
vipsheader.exe --help
vipsthumbnail.exe --help
以上exe是可以运行对图像文件处理。
- 旋转:
右旋/右(顺时针 90°)、左旋/左(逆时针 90°) - 翻转:
左右翻转/左右、上下翻转/上下 - 批量:
批量/批
以下写法均可识别。
- 纯数字:
500→ 宽度 500,高度等比缩放。 - 宽度缩写:
500x→ 同上。 - 高度缩写:
x500→ 高度 500,宽度等比缩放。 - 固定盒子:
500x800→ 将图片适配进 500×800 范围内,保持比例。 - 中文写法:
宽500、宽度500、高500、高度500。 - 缩放拉伸:
800x500!、拉伸 800x500,完整im png 批 右 上下 拉伸 300x50 我的图像。
# 转换为 PNG,右旋 90°
python cli.py png 右旋 photo.jpg
# 转换为 WebP,宽度缩放至 500
python cli.py webp 500 photo.png
# 转换为 JPG,高度缩放至 300
python cli.py jpg x300 photo.bmp
# 转换为 AVIF,限制在 800x600 范围内
python cli.py avif 800x600 photo.tiff# 将当前目录所有图片转为 PNG(输出至 我的图像 文件夹)
python cli.py png 批量 我的图像
python cli.py png 批量 "我的图像"
# 将当前目录所有图片转为 PNG(输出至 out-0 文件夹)如存在则 out-1,避免 out-0-0...无限重复。
python cli.py png 批量
# 批量转为 WebP,并统一宽度 800
python cli.py webp 批量 800
# 批量转为 JPG,先右旋再限制尺寸
python cli.py jpg 批量 右旋 500x500
@echo off
uv run --project "%SCRIPTS%\pyvips-im" python "%SCRIPTS%\pyvips-im\cli.py" %*
命令行:
im png 右 500 photo.jpg
im webp 批 800
注意事项
批量模式只处理当前目录下的图片文件,不递归子文件夹。 若输出文件已存在,会自动生成 文件名-0.扩展名 等序号文件。 尺寸参数中的 500x800 为最大边界限制,输出图片不会超过该尺寸,但会保持原始宽高比。