tianyun 1 년 전
부모
커밋
ae6d90189c
1개의 변경된 파일54개의 추가작업 그리고 0개의 파일을 삭제
  1. 54 0
      project/memos_pic.py

+ 54 - 0
project/memos_pic.py

@@ -0,0 +1,54 @@
+import os
+
+import requests
+from PIL import Image
+
+
+# 压缩图片,然后更新数据库
+
+def convert_to_webp(dir_path):
+    common_image_extensions = [".jpg", ".jpeg", ".png"]
+    for subdir, dirs, files in os.walk(dir_path):
+        # print(files)
+
+        for file in files:
+            filepath = subdir + os.sep + file
+            # 如果不是指定格式图片,就不转换
+            if not any(filepath.lower().endswith(ext) for ext in common_image_extensions):
+                continue
+            # 如果图片大小小于300k,就不转换
+            img = Image.open(filepath)
+            print("检测到其他格式图片:" + filepath)
+            webp_path = filepath + ".webp"
+            img.save(webp_path, "WEBP", quality=80)
+            # 如果图片还是大于300K,就设置图片质量为50
+            if os.path.getsize(webp_path) > 300 * 1024:
+                img.save(webp_path, "WEBP", quality=30)
+            os.remove(filepath)
+
+            # 如果图片原始路径里面有assert,截取从assert开始的路径
+            if "assets" in filepath:
+                index = filepath.index("assets")
+                filepath = filepath[index:]
+                # https://web_history.tianyunperfect.cn/memos/update_resource
+                # get original_internal_path: str, new_internal_path: str
+
+                original_internal_path = filepath
+                new_internal_path = filepath + ".webp"
+                print(original_internal_path, new_internal_path)
+                res = requests.get(f"https://web_history.tianyunperfect.cn/memos/update_resource?original_internal_path={original_internal_path}&new_internal_path={new_internal_path}",
+                                   verify=False)
+                print(res.json())
+
+
+# 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/tmp2")
+convert_to_webp("/app/memos/assets")