import argparse import os from PIL import Image def convert_to_webp(dir_path): common_image_extensions = [".jpg", ".jpeg", ".png", ".webp"] for subdir, dirs, files in os.walk(dir_path): for file in files: # 如果文件不是图片,就跳过 if not any(file.lower().endswith(ext) for ext in common_image_extensions): continue filepath = subdir + os.sep + file # 如果文件实际类型和文件扩展名不一致,就把文件修改为扩展名的类型,然后重新保存 file_extension = os.path.splitext(filepath)[1][1:] file_true_type = Image.open(filepath).format # 打印文件名和文件实际类型 print(filepath, file_true_type, file_extension) # 全部转小写 file_extension = file_extension.lower() # 如果是jpg,就转换为jpeg if file_extension == "jpg": file_extension = "jpeg" file_true_type = file_true_type.lower() if file_extension != file_true_type: # 读取图片,转换为file_extension类型 # 打印日志 print(f"检测到文件扩展名和文件实际类型不一致,文件扩展名为{file_extension},文件实际类型为{file_true_type}") img = Image.open(filepath) img.save(filepath, file_extension) # 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 convert_to_webp("/Users/alvin/Desktop/tmp")