xueyiming 6 miesięcy temu
rodzic
commit
93dcc16e5a
1 zmienionych plików z 54 dodań i 6 usunięć
  1. 54 6
      app.py

+ 54 - 6
app.py

@@ -2,8 +2,11 @@ import os
 import tempfile
 
 import face_recognition
+import requests
+
+from flask import Flask, request, jsonify, json
+
 
-from flask import Flask, request, jsonify
 def create_app():
     app = Flask(__name__)
 
@@ -18,8 +21,31 @@ def create_app():
     def hello_world():  # put application's code here
         return 'Hello World!'
 
-    @app.route('/recognize', methods=['POST'])
-    def recognize():
+    @app.route('/recognize/url', methods=['POST'])
+    def recognize_url():
+        if 'url' not in request.json:
+            return jsonify({'error': 'No URL provided'}), 400
+        url = request.json.get('url')
+        if not url:
+            return jsonify({'error': 'Invalid URL'}), 400
+        try:
+            # 从 URL 下载文件
+            response = requests.get(url)
+            if response.status_code != 200:
+                return jsonify({'error': 'Failed to download image from URL'}), 400
+            # 创建一个临时文件保存下载的文件
+            temp_file = tempfile.NamedTemporaryFile(delete=False)
+            temp_file.write(response.content)
+            temp_file.close()
+            find = find_faces_in_image(temp_file.name)
+            os.remove(temp_file.name)  # 删除临时文件
+            results = return_json(find)
+            return results
+        except Exception as e:
+            return jsonify({'error': str(e)}), 500
+
+    @app.route('/recognize/file', methods=['POST'])
+    def recognize_file():
         if 'file' not in request.files:
             return jsonify({'error': 'No file part'}), 400
         file = request.files['file']
@@ -29,13 +55,35 @@ def create_app():
             # 创建一个临时文件保存上传的文件
             temp_file = tempfile.NamedTemporaryFile(delete=False)
             file.save(temp_file.name)
-            results = find_faces_in_image(temp_file.name)
-            os.remove(temp_file.name)  # 删除临时文件
-            return jsonify(results)
+            find = find_faces_in_image(temp_file.name)
+            os.remove(temp_file.name)# 删除临时文件
+            results = return_json(find)
+            return results
+        return jsonify({'error': 'An error occurred'}), 500
+
+
+
+
+
     return app
 
 
 
+def return_json(find):
+    result = {
+        "code": 0,
+        "msg": "success",
+        "data": None,  # 将 data 初始化为 None
+        "success": True
+    }
+    if find:
+        result["data"] = {"find_face_status": 1}
+    else:
+        result["data"] = {"find_face_status": 2}
+    json_result = json.dumps(result)
+    return json_result
+
+
 
 # 全局变量存储已知人脸编码和名称
 known_face_encodings = []