一、为什么选择 WebP?
在现代网页开发中,图片加载速度直接影响用户体验和SEO排名。Google推出的 WebP 图像格式 能在保持高质量的同时显著减小文件体积:
- 相比 JPEG,WebP 有损压缩平均节省 25%~35% 的体积;
- 相比 PNG,WebP 无损压缩可减少 26% 以上;
- 支持透明通道(Alpha)、动画、元数据等高级特性。
因此,将网站中的 JPG/PNG 等传统格式批量转换为 WebP,是提升网站性能的重要一步。
本文幽络源将手把手教你使用 Python 脚本,一键批量转换任意文件夹下的图片为 WebP 格式,并附带真实操作示例。
二、所需工具与环境
1. 安装 Python
确保你的系统已安装 Python 3.6 或更高版本。可通过终端/命令行输入:
python --version
# 或
python3 --version
2. 安装 Pillow 库
Pillow 是 Python 中最常用的图像处理库,支持多种格式读写。
pip install Pillow
三、完整转换脚本
将以下代码保存为 convert_to_webp.py:
import os
from pathlib import Path
from PIL import Image
def convert_images_to_webp(directory, quality=80, delete_original=True):
"""
将指定目录及其子目录下的所有支持的图片(包括 .webp)转换为 WebP 格式。
对已有 .webp 文件也会重新压缩(可用于进一步降低质量)。
参数:
directory (str): 要处理的目录路径
quality (int): WebP 有损压缩质量,范围 0~100(仅对非透明图生效;透明图默认 lossless=False + quality)
delete_original (bool): 是否删除原始图片文件(默认 True)
"""
# 支持的原始图片扩展名(现在包含 .webp)
image_extensions = {'.jpg', '.jpeg', '.png', '.bmp', '.gif', '.tiff', '.webp'}
for root, _, files in os.walk(directory):
for filename in files:
filepath = Path(root) / filename
file_ext = filepath.suffix.lower()
if file_ext in image_extensions:
new_filepath = filepath.with_suffix('.webp')
try:
with Image.open(filepath) as img:
# 处理透明图像:使用带透明的有损 WebP(WebP 支持有损+透明)
if img.mode in ("RGBA", "LA"):
# 注意:有损 WebP 也支持透明,但需显式设置 method 和 quality
# lossless=False + quality 可减小体积,同时保留 alpha
img.save(new_filepath, 'WEBP', lossless=False, quality=quality, method=6)
else:
# 非透明图像:转为 RGB 后有损压缩
if img.mode != "RGB":
img = img.convert("RGB")
img.save(new_filepath, 'WEBP', quality=quality, method=6)
# 如果原文件就是 .webp 且启用了 delete_original,则覆盖前先判断是否同名
if delete_original:
if filepath != new_filepath:
filepath.unlink()
else:
# 原地重写:先保存到临时文件再替换,避免数据丢失(这里简化处理)
# 实际上 PIL 的 save 会直接覆盖,所以安全前提是先读取完成
pass
print(f"✅ 已转换并删除: {filepath} → {new_filepath}")
else:
print(f"✅ 已转换(保留原图): {filepath} → {new_filepath}")
except Exception as e:
print(f"❌ 转换失败 {filepath}: {e}")
if __name__ == "__main__":
# === 修改这里!设置你要转换的文件夹路径 ===
target_directory = r"C:\Users\AW\Pictures\LW"
if os.path.isdir(target_directory):
print(f"开始转换目录: {target_directory}")
convert_images_to_webp(
directory=target_directory,
quality=70, # 可调低以进一步压缩(例如 30~70)
delete_original=True # 建议首次运行设为 False,确认效果后再删除
)
print("🎉 所有图片转换完成!")
else:
print(f"❌ 错误:目录不存在!请检查路径:{target_directory}")
💡 脚本亮点:
- 自动递归处理子文件夹;
- 智能判断是否含透明通道(自动启用无损模式);
- 可控是否删除原图,避免误操作;
- 支持常见图片格式(JPG、PNG、BMP、GIF 等)。
四、具体使用示例
如下图,幽络源这里随便截图一张图片保存后可以看到大小为 156KB

将图片转换压缩脚本的质量参数设置为85后执行,如下

可以看到图像的大小减少到了56.3KB

结语
通过这个简单而强大的 Python 脚本,你可以轻松实现全站图片 WebP 化,显著提升网页加载速度,降低带宽消耗,同时改善 SEO 表现,如有疑问或有其他Python脚本需求可加入幽络源官方QQ群咨询307531422
THE END
