File size: 2,226 Bytes
eeb55d5
d24e6ff
 
 
 
 
b0f4df1
 
d24e6ff
 
3eb4bfd
b0f4df1
d24e6ff
b0f4df1
d24e6ff
 
3eb4bfd
b0f4df1
d24e6ff
 
 
3eb4bfd
d24e6ff
3eb4bfd
 
d24e6ff
 
 
 
b0f4df1
d24e6ff
b0f4df1
 
 
 
eeb55d5
b0f4df1
3eb4bfd
eeb55d5
3eb4bfd
d24e6ff
 
eeb55d5
d24e6ff
3eb4bfd
 
 
d24e6ff
 
 
b0f4df1
d24e6ff
3eb4bfd
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
46
47
48
49
50
51
52
53
54
55
56
57

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()