import gradio as gr from livro import processar_e_mostrar, verificar_contraste, gerar_preview_kdp with gr.Blocks() as demo: with gr.Row(): desenho = gr.ImageEditor(label="Desenhe aqui sua imagem com caneta", type="numpy", interactive=True) with gr.Row(): idade = gr.Slider(minimum=4, maximum=12, step=1, value=6, label="Idade da criança (ajusta número de pontos)") posicao = gr.Radio(["Topo da página", "Centro da página", "Base da página"], value="Centro da página", label="Posicionamento do desenho") contraste_alerta = gr.Textbox(label="Aviso de Contraste", interactive=False) with gr.Row(): imagem_resultado = gr.Image(label="Prévia com Pontos Numerados") sobreposicao = gr.Image(label="Preview com Sobreposição") with gr.Row(): gerar_btn = gr.Button("Gerar Pontos") salvar_btn = gr.Button("Salvar como PDF") salvar_png = gr.Button("Salvar como PNG") capa_btn = gr.Button("Gerar Preview da Capa") saida_pdf = gr.File(label="Download PDF") saida_png = gr.File(label="Download PNG") saida_capa = gr.Image(label="Preview da Capa") resultado = {} def gerar(desenho_array, idade, posicao): global resultado if desenho_array is None or desenho_array.sum() < 1000: return "⚠️ Por favor, desenhe uma imagem para gerar os pontos.", None, None aviso = verificar_contraste(desenho_array) try: resultado = processar_e_mostrar(desenho_array, None, idade, posicao) return aviso, resultado["preview"], resultado["overlay"] except Exception as e: return f"Erro: {str(e)}", None, None def salvar_pdf(): return resultado.get("pdf") if resultado else None def salvar_imagem(): return resultado.get("png") if resultado else None def gerar_capa(): return gerar_preview_kdp() gerar_btn.click(gerar, inputs=[desenho, idade, posicao], outputs=[contraste_alerta, imagem_resultado, sobreposicao]) salvar_btn.click(salvar_pdf, outputs=saida_pdf) salvar_png.click(salvar_imagem, outputs=saida_png) capa_btn.click(gerar_capa, outputs=saida_capa) demo.launch()