Image_Gen_Server/app.py

90 lines
3.2 KiB
Python
Raw Normal View History

2024-10-14 06:50:56 +00:00
import base64
import hashlib
2024-10-03 03:39:20 +00:00
import json
2024-10-14 06:50:56 +00:00
import random
2024-10-03 03:39:20 +00:00
import uuid
from flask import Flask, request, jsonify
import sys
import openpose_gen as opg
sys.path.append('./')
app = Flask(__name__)
2024-10-14 06:50:56 +00:00
@app.route('/gen_image', methods=['POST'])
def gen_image():
2024-10-03 03:39:20 +00:00
if request.is_json:
data = request.get_json()
coordinates = data['coordinates']
canvas_size = data['canvas_size']
2024-10-14 06:50:56 +00:00
pid = data['pid']
2024-10-03 03:39:20 +00:00
if not coordinates or not canvas_size:
return jsonify({"status": "error", "message": "Missing data"}), 422
2024-10-14 06:50:56 +00:00
openpose_image_path = opg.save_bodypose(canvas_size[0], canvas_size[1], coordinates, pid)
# gen_fencer_prompt(openpose_image_path, pid, opg.server_address)
2024-10-03 03:39:20 +00:00
return jsonify({"status": "success", "message": "Data received"}), 201
else:
return jsonify({"status": "error", "message": "Request must be JSON"}), 415
2024-10-14 06:50:56 +00:00
@app.route('/gen_group_pic', methods=['POST'])
def init_gen_group_pic():
if request.is_json:
data = request.get_json()
coordinates_list = data['coordinates_list']
canvas_size = data['canvas_size']
pid = data['pid']
base_image = base64.b64decode(data['base_image'])
# save base image to ./test.png
with open("test.png", "wb") as f:
f.write(base_image)
if not coordinates_list or not canvas_size or not base_image or not pid:
return jsonify({"status": "error", "message": "Missing data"}), 422
for i in range(len(coordinates_list)):
coordinates_list[i] = coordinates_list[i]['coordinates']
openpose_image_path = opg.save_bodypose_mulit(canvas_size[0], canvas_size[1], coordinates_list, pid)
# gen_group_pic(openpose_image_path, base_image, pid, opg.server_address)
return jsonify({"status": "success", "message": "Data received"}), 201
else:
return jsonify({"status": "error", "message": "Request must be JSON"}), 415
def gen_fencer_prompt(openpose_image_path, pid, comfyUI_address):
with open("fencerAPI.json", "r") as f:
prompt_json = f.read()
prompt = json.loads(prompt_json)
openpose_image_name = opg.upload_image_circular_queue(openpose_image_path, 20, pid)
opg.upload_image("ref_black.png", "ref_black.png")
prompt["3"]["inputs"]["seed"] = random.randint(0, 10000000000)
prompt["29"]["inputs"]['image'] = "ref_black.png"
prompt["17"]["inputs"]['image'] = openpose_image_name
opg.queue_prompt(prompt, comfyUI_address)
def gen_group_pic(openpose_image_path, base_image, pid, comfyUI_address):
with open("groupAPI.json", "r") as f:
prompt_json = f.read()
prompt = json.loads(prompt_json)
openpose_image_name = opg.upload_image_circular_queue(openpose_image_path, 30, pid)
base_image_name = opg.upload_image_circular_queue(base_image, 30, pid)
2024-10-03 03:39:20 +00:00
2024-10-14 06:50:56 +00:00
prompt["3"]["inputs"]["seed"] = random.randint(0, 10000000000)
prompt["17"]["inputs"]['image'] = openpose_image_name
prompt["17"]["inputs"]['image'] = base_image_name
2024-10-03 03:39:20 +00:00
2024-10-14 06:50:56 +00:00
opg.queue_prompt(prompt, comfyUI_address)
2024-10-03 03:39:20 +00:00
if __name__ == '__main__':
app.run(debug=True)