File size: 1,705 Bytes
eeb55d5
d24e6ff
 
 
 
 
65fb503
d24e6ff
 
 
 
 
 
 
 
 
 
 
 
 
 
 
65fb503
d24e6ff
eeb55d5
 
65fb503
eeb55d5
 
 
 
 
d24e6ff
 
eeb55d5
d24e6ff
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45

import gradio as gr
from livro import processar_e_mostrar, verificar_contraste, gerar_preview_kdp

with gr.Blocks() as demo:
    with gr.Row():
        imagem_input = gr.Image(label="Imagem Original", type="numpy")
        mascara = gr.ImageEditor(label="Marcar áreas para preservar (opcional)")
    with gr.Row():
        idade = gr.Slider(minimum=4, maximum=12, step=1, value=6, label="Idade da criança (ajusta número de pontos)")
    contraste_alerta = gr.Textbox(label="Aviso de Contraste", interactive=False)
    with gr.Row():
        imagem_resultado = gr.Image(label="Prévia com Pontos Numerados")
    with gr.Row():
        gerar_btn = gr.Button("Gerar Pontos")
        salvar_btn = gr.Button("Salvar como PDF")
        capa_btn = gr.Button("Gerar Preview da Capa")
        saida_pdf = gr.File(label="Download do PDF")
        saida_capa = gr.Image(label="Preview da Capa")

    resultado = {}

    def gerar(imagem_array, mask_array, idade):
        global resultado
        if imagem_array is None:
            return "⚠️ Nenhuma imagem enviada.", None
        aviso = verificar_contraste(imagem_array)
        try:
            resultado = processar_e_mostrar(imagem_array, mask_array, idade)
            return aviso, resultado["preview"]
        except Exception as e:
            return f"Erro: {str(e)}", None

    def salvar_pdf():
        return resultado.get("pdf") if resultado else None

    def gerar_capa():
        return gerar_preview_kdp()

    gerar_btn.click(gerar, inputs=[imagem_input, mascara, idade], outputs=[contraste_alerta, imagem_resultado])
    salvar_btn.click(salvar_pdf, outputs=saida_pdf)
    capa_btn.click(gerar_capa, outputs=saida_capa)

demo.launch()