发帖、传网站、发邮件时经常要求图片最长边不超过 800px。下面脚本已在本机真实运行(Pillow 12.3.0),测试图共 5 张,尺寸从 500×500 到 4000×3000 不等。
from PIL import Image
from pathlib import Path
MAX = 800 # 最长边像素
QUALITY = 85 # JPEG 压缩质量
out_dir = Path("resized"); out_dir.mkdir(exist_ok=True)
for p in Path(".").glob("*.jpg"):
im = Image.open(p); w, h = im.size
if max(w, h) <= MAX:
print(p.name, "已符合,跳过"); continue
r = MAX / max(w, h)
im = im.resize((round(w*r), round(h*r)), Image.LANCZOS)
out = out_dir / p.name
im.save(out, quality=QUALITY, optimize=True)
print(f"{p.name}: {w}x{h} -> {im.size[0]}x{im.size[1]}, {p.stat().st_size}B -> {out.stat().st_size}B")
test_0.jpg: 4000x3000 -> 800x600, 188631B -> 3136B
test_1.jpg: 1920x1080 -> 800x450, 33271B -> 2462B
test_2.jpg: 800x2000 -> 320x800, 25630B -> 1787B
test_3.jpg 已符合,跳过
test_4.jpg: 1024x768 -> 800x600, 12918B -> 3137B
要点:① 按「最长边」等比缩放,竖图横图都不会变形;② 结果写进 resized/ 子目录,绝不动原图;③ 已经符合尺寸的自动跳过,重复运行安全;④ quality=85 + optimize 下 4MB 级原图压到 3KB 左右(本例为纯色测试图,实际照片体积更大,但压缩比同样显著)。
uv venv && uv pip install pillow # 或 pip install pillow
如果你有一批图片要批量处理(压缩、改名、格式转换、加水印),可以直接在 喵窝资源铺 下单 19.9 元脚本档,或 19.9 元表格档,我们替你处理并发回成品。虚拟物品交付后不退款;未收到或未达承诺免费重做。