File size: 4,107 Bytes
33adbe7
03fc011
b6016a7
796cb1f
0276c07
bb33d1a
2f3af37
31833d7
796cb1f
 
 
 
 
34a218b
796cb1f
34a218b
 
796cb1f
34a218b
 
 
 
 
796cb1f
34a218b
796cb1f
 
 
 
 
 
 
34a218b
 
796cb1f
34a218b
796cb1f
 
34a218b
796cb1f
 
 
03fc011
 
0276c07
34a218b
 
03fc011
 
 
 
34a218b
 
03fc011
 
 
 
 
 
 
 
 
 
 
 
 
 
 
34a218b
03fc011
34a218b
 
 
 
 
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
import gradio as gr
from gradio.themes.utils.colors import Color
import random
import time
import shared
import argparse
import modules.path
import fooocus_version
import modules.html
import modules.async_worker as worker

from modules.sdxl_styles import style_keys, aspect_ratios

def generate(*args):
    yield gr.update(interactive=False), \
        gr.update(visible=True, value=modules.html.make_progress_html(1, "0/30")), \
        gr.update()

    while worker.is_working:
        time.sleep(0.1)
        
    worker.buffer=[list(args)]
    worker.outputs = []

    finished=False
    while not finished:
        time.sleep(0.01)
        if len(worker.outputs) > 0:
            flag, product = worker.outputs.pop(0)
            if flag == 'preview':
                percentage, title, image = product
                yield gr.update(interactive=False), \
                    gr.update(value=modules.html.make_progress_html(percentage, title)), \
                    gr.update(value=image) if image is not None else gr.update()
            if flag == 'results':
                image = product[0]
                yield gr.update(interactive=True), \
                    gr.update(visible=False), \
                    gr.update(value=image)
                finished = True
    return

qm_color=Color(name="qm", c50="#effaed",c100="#def5db",c200="#64b445",c300="#c6eec0",c400="#b9ebb3",c500="#64b445",c600="#55993b",c700="#467e30",c800="#325a23",c900="#233f18",c950="#192d11")
shared.gradio_root = gr.Blocks(title='QualityMinds AI Christmas Card Maker', css=modules.html.css, theme=gr.themes.Default(primary_hue=qm_color))
with shared.gradio_root:
    gr.Markdown(
    """
    # QualityMinds KI Weihnachtskarten-Generator
    * Beschreibe das Motiv der Weihnachtskarte in einem Prompt (Englisch), wähle einen Stil und generiere!
    * Zur Übersetzung einer Beschreibung ins Englische kann beispielsweise [deepl.com](https://www.deepl.com/translator#de/Schneekugeln) helfen.
    * Das Tool basiert auf [Stable Diffusion XL](https://stability.ai/stable-diffusion) v1.0 und der Oberfläche [Fooocus](https://github.com/lllyasviel/Fooocus), der Code ist OpenSource auf [Github](https://github.com/QualityMinds/AI-Christmas-Cards) verfügbar.
    """)
    with gr.Row(elem_classes='type_row'):
        with gr.Column(scale=2):
            gr.Markdown("##### Prompt (Englisch)", elem_classes="input-label")
            prompt = gr.Textbox(label="Prompt (Englisch)", value="", placeholder="Was möchtest Du auf der Weihnachtskarte abbilden?", 
                                autofocus=True, elem_classes='type_row', container=False, lines=2)
            description_de = gr.Textbox(label="Beschreibung", visible=False)
            gr.Markdown("##### Beispiele", elem_classes="input-label")
            gr.Examples(examples=[["Der Weihnachtsmann mit seinem Sack voller Geschenke", "Santa Claus with his sack full of gifts"], 
                                  ["Malerisches Winterdorf in einer Schneekugel", "Scenic winter village inside a snow globe"], 
                                  ["Niedliche Pinguine in Schals und Mützen eingewickelt", "Cute penguins wrapped up in scarves and hats"]],
                        inputs=[description_de, prompt], elem_id="prompt_examples", cache_examples=False)

        with gr.Column(scale=1, min_width="120px"):
            gr.Markdown("##### Stil", elem_classes="input-label")
            style_selection = gr.Dropdown(label='Stil', choices=style_keys, value='Kinofilm', container=False)
            run_button = gr.Button(value="Weihnachtskarte\nerstellen", variant='primary', elem_classes='generate_button')
            progress_html = gr.HTML(visible=False, elem_id='progress-bar', elem_classes='progress-bar')
    generated_image = gr.Image(label="Weihnachtskarte", width=1280, value="resources/init.png" )

    run_button.click(fn=generate, inputs=[prompt, style_selection], outputs=[run_button, progress_html, generated_image])

shared.gradio_root.queue(concurrency_count=1, api_open=False)
shared.gradio_root.launch(server_name="0.0.0.0", show_api=False)