12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- 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")
|