批量图片格式转换神器:用 Python 一键将 JPG/PNG 转换为 WebP!

在网页优化与图像压缩的需求日益提升的今天,WebP 格式以其高压缩率与优秀的画质表现,逐渐成为主流。为了提升网站性能、减少流量消耗,我用 Python 写了一个轻量级脚本,可以批量将当前目录下的 JPG、JPEG、PNG 图片转换为 WebP 格式,并自动输出到指定子目录中。

convert_to_webp.py 在工作目录中自动生成了 webp_images 子目录


脚本功能一览

  • 支持 .jpg.jpeg.png 格式的图片文件
  • 自动创建输出目录 webp_images
  • 支持增量转换:只转换新增或变动的图片
  • 使用 Pillow 库处理图像,默认压缩质量为 85
  • 控制台输出转换进度与错误提示


脚本内容详解

脚本文件名:convert_to_webp.py

import os
from PIL import Image

SOURCE_DIR = os.getcwd()
OUTPUT_DIR = os.path.join(SOURCE_DIR, "webp_images")
os.makedirs(OUTPUT_DIR, exist_ok=True)

EXTENSIONS = ('.jpg', '.jpeg', '.png')

def is_conversion_needed(src_path, dst_path):
return not os.path.exists(dst_path) or os.path.getmtime(src_path) > os.path.getmtime(dst_path)

def convert_image(file_path, output_dir):
try:
basename = os.path.splitext(os.path.basename(file_path))[0]
webp_path = os.path.join(output_dir, basename + ".webp")

if not is_conversion_needed(file_path, webp_path):
print(f"[跳过] 已存在并是最新: {basename}.webp")
return

img = Image.open(file_path)
img.save(webp_path, 'webp', quality=85)
print(f"[转换] {file_path} -> {webp_path}")
except Exception as e:
print(f"[错误] 转换失败: {file_path} 错误: {e}")

def batch_convert(source_dir, output_dir):
for root, _, files in os.walk(source_dir):
for filename in files:
if filename.lower().endswith(EXTENSIONS):
file_path = os.path.join(root, filename)
convert_image(file_path, output_dir)

if __name__ == "__main__":
print(f"扫描目录: {SOURCE_DIR}")
print(f"输出目录: {OUTPUT_DIR}")
batch_convert(SOURCE_DIR, OUTPUT_DIR)
print("全部转换完成。")


如何使用?

  1. 确保系统已安装 Python 和 Pillow 库: bash复制编辑pip install pillow
  2. convert_to_webp.py 放入你的图片目录中。
  3. 双击或运行: bash复制编辑python convert_to_webp.py
  4. 转换结果会统一输出到 webp_images 文件夹中。


项目小结

这个脚本非常适合:

  • 网页前端开发人员
  • 静态站点维护者
  • 内容创作者 & 博主

它帮助你将大量旧图片快速转换为 WebP,提升网页加载速度,降低流量成本,同时支持增量更新,省时省力!

版权声明:
作者:KEJILION
链接:https://blog.kejilion.pro/jpg-png-to-webp/
来源:科技lion官方博客【国内版】
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>