Skip to content
Snippets Groups Projects
Commit 14d7d0f3 authored by BIRK Renaud's avatar BIRK Renaud
Browse files

feat: API POST /render

parent baaf58a6
No related branches found
No related tags found
No related merge requests found
import os
import tempfile
from flask import jsonify, Response
from gradio_client import Client, handle_file
class RenderController:
def get_render(self, hf_token='', base_image_url='',
def post_render(self, hf_token='', base_image=None,
prompt='A realistic photo of a building',
negative_prompt="sketch, drawing",
instruct_query='use everything from the image',
scale=0.8,
nfaa_negative_prompt='naked, bikini, skimpy, scanty, bare skin, lingerie, swimsuit, exposed, see-through') -> Response:
if not base_image:
return jsonify({"error": "Aucune image envoyée"}), 400
if base_image.filename == '':
return jsonify({"error": "Nom de fichier vide"}), 400
# Définir un chemin temporaire compatible avec tous les OS
temp_dir = tempfile.gettempdir()
temp_path = os.path.join(temp_dir, base_image.filename)
# Sauvegarde temporaire
base_image.save(temp_path)
client = Client("unity/IP-Adapter-Instruct")
result = client.predict(
images=handle_file(base_image_url),
images=handle_file(temp_path),
prompt=prompt,
negative_prompt=negative_prompt,
instruct_query=instruct_query,
......@@ -22,4 +36,7 @@ class RenderController:
api_name="/generate_image"
)
# Suppression du fichier temporaire après utilisation
os.remove(temp_path)
return jsonify({"result": result})
from flask import Blueprint, Response, request
from flask import Blueprint, Response, jsonify, request
from controllers.gdrive_controller import GDriveController
from controllers.glb_controller import GlbController
from controllers.render_controller import RenderController
......@@ -33,20 +33,6 @@ def setup_routes(app):
slat_sampling_steps, multiimage_algo,
mesh_simplify, texture_size)
# Text + Sketch to image
@app.route('/render', methods=['GET'])
def get_render() -> Response:
hf_token = request.args.get('hf_token', '', type=str)
base_image_url = request.args.get('base_image_url', '', type=str)
prompt = request.args.get('prompt', 'A realistic photo of a building', type=str)
negative_prompt = request.args.get('negative_prompt', 'sketch, drawing', type=str)
instruct_query = request.args.get('instruct_query', 'use everything from the image', type=str)
scale = request.args.get('scale', 0.8, type=float)
nfaa_negative_prompt = request.args.get('nfaa_negative_prompt', 'naked, bikini, skimpy, scanty, bare skin, lingerie, swimsuit, exposed, see-through', type=str)
return render_controller.get_render(hf_token, base_image_url, prompt, negative_prompt,
instruct_query, scale, nfaa_negative_prompt)
# Suggest
@app.route('/suggest', methods=['GET'])
def get_suggest() -> Response:
......@@ -71,3 +57,21 @@ def setup_routes(app):
folder_id = request.form.get('folder_id', '', type=str)
return gdrive_controller.post_gdrive(local_file_path, folder_id)
# Text + Sketch to image
@app.route('/render', methods=['POST'])
def post_render() -> Response:
# Vérifier si un fichier est envoyé
if 'image' not in request.files:
return jsonify({"error": "Aucune image envoyée"}), 400
hf_token = request.form.get('hf_token', '', type=str)
base_image = request.files.get('image')
prompt = request.form.get('prompt', 'A realistic photo of a building', type=str)
negative_prompt = request.form.get('negative_prompt', 'sketch, drawing', type=str)
instruct_query = request.form.get('instruct_query', 'use everything from the image', type=str)
scale = request.form.get('scale', 0.8, type=float)
nfaa_negative_prompt = request.form.get('nfaa_negative_prompt', 'naked, bikini, skimpy, scanty, bare skin, lingerie, swimsuit, exposed, see-through', type=str)
return render_controller.post_render(hf_token, base_image, prompt, negative_prompt,
instruct_query, scale, nfaa_negative_prompt)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment