changeImageType.py 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import argparse
  2. import os
  3. from PIL import Image
  4. def convert_to_webp(dir_path):
  5. common_image_extensions = [".jpg", ".jpeg", ".png", ".webp"]
  6. for subdir, dirs, files in os.walk(dir_path):
  7. for file in files:
  8. # 如果文件不是图片,就跳过
  9. if not any(file.lower().endswith(ext) for ext in common_image_extensions):
  10. continue
  11. filepath = subdir + os.sep + file
  12. # 如果文件实际类型和文件扩展名不一致,就把文件修改为扩展名的类型,然后重新保存
  13. file_extension = os.path.splitext(filepath)[1][1:]
  14. file_true_type = Image.open(filepath).format
  15. # 打印文件名和文件实际类型
  16. print(filepath, file_true_type, file_extension)
  17. # 全部转小写
  18. file_extension = file_extension.lower()
  19. # 如果是jpg,就转换为jpeg
  20. if file_extension == "jpg":
  21. file_extension = "jpeg"
  22. file_true_type = file_true_type.lower()
  23. if file_extension != file_true_type:
  24. # 读取图片,转换为file_extension类型
  25. # 打印日志
  26. print(f"检测到文件扩展名和文件实际类型不一致,文件扩展名为{file_extension},文件实际类型为{file_true_type}")
  27. img = Image.open(filepath)
  28. img.save(filepath, file_extension)
  29. # if __name__ == "__main__":
  30. # parser = argparse.ArgumentParser(description='Convert images to webp format.')
  31. # parser.add_argument('dir_path', type=str, help='Directory path to scan for images')
  32. #
  33. # args = parser.parse_args()
  34. #
  35. # convert_to_webp(args.dir_path)
  36. ## python compress_dir_img.py /path/to/directory
  37. convert_to_webp("/Users/alvin/Desktop/tmp")