import spaces import gradio as gr from PIL import Image import io import os # Importa a função melhorada do seu módulo (que já está ajustado ) from faceless_processing import build_faceless_embroidery_assets @spaces.GPU def process_faceless(input_image, prompt="", negative_prompt=""): if input_image is None: return None, None # NÃO REDIMENSIONAMOS A IMAGEM – a função interna ( embroidery_processing.py) já lida com tamanhos variados. # Gera lineart e cutout usando a função otimizada try: lineart, cutout = build_faceless_embroidery_assets( input_image, use_huggingface=False, # Desativa Hugging Face (pode ativar se tiver token) prompt=prompt or None, negative_prompt=negative_prompt or None, ) return lineart, cutout except Exception as e: print(f"[ERRO] process_faceless: {e}") # Fallback: retorna a imagem original e uma mensagem de erro return input_image, None # Interface Gradio demo = gr.Interface( fn=process_faceless, inputs=[ gr.Image(type="pil", label="Imagem de Entrada"), gr.Textbox(label="Prompt (Opcional)", value=""), gr.Textbox(label="Prompt Negativo (Opcional)", value="") ], outputs=[ gr.Image(label="Lineart Final (Transparente)"), gr.Image(label="Recorte do Rosto (Sem Fundo)") ], title="Faceless Embroidery Studio Generator", description="Gera contornos e linearts minimalistas (Faceless) para bordados a partir de retratos.\n\n**Nota:** O rosto é completamente apagado e apenas a silhueta externa é desenhada." ) if __name__ == "__main__": demo.launch()