import os from PIL import Image import argparse def convert_to_webp(dir_path): common_image_extensions = [".jpg", ".jpeg", ".png"] for subdir, dirs, files in os.walk(dir_path): for file in files: filepath = subdir + os.sep + file if filepath.endswith(".webp"): continue if not any(filepath.lower().endswith(ext) for ext in common_image_extensions): continue try: img = Image.open(filepath) if img.format == "WEBP": continue print("检测到其他格式图片:" + filepath) webp_path = filepath + ".webp" img.save(webp_path, "WEBP") os.remove(filepath) os.rename(webp_path, filepath) except IOError: print(f"Cannot convert {file}") if __name__ == "__main__": parser = argparse.ArgumentParser(description='Convert images to webp format.') parser.add_argument('dir_path', type=str, help='Directory path to scan for images') args = parser.parse_args() convert_to_webp(args.dir_path) # python compress_dir_img.py /path/to/directory