Files
PComputerVison/main.py
2021-02-16 00:20:14 -05:00

68 lines
2.3 KiB
Python

import os
from datetime import datetime
from flask import Flask, jsonify, request
import config
from werkzeug.utils import secure_filename
from imageProcessing import extract_metadata
ALLOWED_EXTENSIONS = {'png', 'jpg', 'jpeg'}
app = Flask("P! Vision Metadata Engine")
app.config["UPLOAD_FOLDER"] = config.DATA_FOLDER
router = '/metadata/' + config.ENV
def allowed_file(file_name):
return '.' in file_name and \
file_name.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS
@app.route(router + '/hello', methods=['GET'])
def hello():
return "Hello from P! Metadata Engine"
@app.route(router + '/calculate-image-metadata',
methods=['GET', 'POST'])
def calculate_image_metadata():
try:
if request.method == 'POST':
print()
print("request.form:\t", request.form)
print("request.files:\t", request.files)
request_id = request.form.get("request_id", 100)
print("request_id:\t", request_id)
if "image_file" not in request.files:
msg = "No file part: 'image_file' in POST request."
print(msg)
return msg
file = request.files["image_file"]
if file.filename == '':
msg = "File name is empty."
print(msg)
return msg
if file and allowed_file(file.filename):
print("Uploaded file:\t", file.filename)
image_file_name = str(datetime.now()).replace(':', '') + \
f'_{request_id}_' + secure_filename(file.filename)
image_file_path = os.path.join(
app.config["UPLOAD_FOLDER"], image_file_name)
file.save(image_file_path)
print(f"Image file is saved at {image_file_path}")
modelResponse =extract_metadata(image_file_path)
print("Response :\t", modelResponse)
return jsonify({"request_id": request_id, "metadata": modelResponse})
else:
msg = "POST the image file. Don't GET it."
print(msg)
return msg
except Exception as e:
msg = str(type(e).__name__) + ': ' + str(e)
print(msg)
return msg
if __name__ == '__main__':
app.run(debug=False, host="0.0.0.0", port=4455)