File size: 4,059 Bytes
1d33068
 
 
 
f8957c5
1d33068
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f8957c5
c6bfa94
 
 
 
 
 
 
 
 
 
 
 
9a29b5b
f8957c5
 
 
 
 
 
 
 
 
 
 
1d33068
 
 
 
 
 
 
 
 
 
 
f8957c5
 
1d33068
 
f8957c5
 
 
 
 
 
57c37dd
 
f8957c5
 
 
 
 
 
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
import gradio as gr
from gradio_client import Client
import os
import logging
from urllib.parse import parse_qs, urlparse

client_image = Client("mukaist/DALLE-4K")
resolutions = {
    "896x1152": (896, 1152),
    "1024x1024": (1024, 1024),
    "1216x832": (1216, 832)
}
DEFAULT_STYLE = "3840 x 2160"
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

def generate_image(prompt, resolution_key, style=DEFAULT_STYLE):
    resolution = resolutions.get(resolution_key, (1024, 1024))
    width, height = resolution
    full_prompt = f"{prompt}, Canon EOS R5, 4K, Photo-Realistic, appearing photorealistic with super fine details, high resolution, natural look, hyper realistic photography, cinematic lighting, --ar 64:37, --v 6.0, --style raw, --stylize 750"
    try:
        result = client_image.predict(
            prompt=full_prompt,
            negative_prompt="(deformed, distorted, disfigured:1.3), poorly drawn, bad anatomy, wrong anatomy, extra limb, missing limb, floating limbs, (mutated hands and fingers:1.4), disconnected limbs, mutation, mutated, ugly, disgusting, blurry, amputation",
            use_negative_prompt=True,
            style=style,
            seed=0,
            width=width,
            height=height,
            guidance_scale=5,
            randomize_seed=True,
            api_name="/run"
        )
        logger.info("Image generation successful.")
        return result
    except Exception as e:
        logger.error(f"Error generating image: {e}")
        return None        

def gradio_interface(prompt, resolution_key):
    result = generate_image(prompt, resolution_key)
    
    if result and result[0]:
        file_path = result[0][0].get('image')
        if file_path and os.path.exists(file_path):
            return file_path, "The image was generated successfully."
        else:
            return None, "The image file is not available. Please try again later."
    else:
        return None, "There was an error processing your photo. Please try again later."

def create_gradio_interface(username):
        prompt_input = gr.Textbox(label="Prompt", placeholder="Enter your prompt here...")
        resolution_dropdown = gr.Dropdown(choices=list(resolutions.keys()), label="Resolution", value="1024x1024")
        generate_button = gr.Button("Generate")
        
        result_output = gr.Image(label="Generated Image", type="pil")
        message_output = gr.Textbox(label="Result", placeholder="Results will be shown here", interactive=False)
        
        generate_button.click(fn=lambda prompt, resolution_key: gradio_interface(prompt, resolution_key),
                              inputs=[prompt_input, resolution_dropdown],
                              outputs=[result_output, message_output])


    with gr.Blocks() as interface:
        gr.HTML(f"""
        <script src="https://telegram.org/js/telegram-web-app.js"></script>
        <script>
            document.addEventListener('DOMContentLoaded', function() {{
                window.Telegram.WebApp.init();
                window.Telegram.WebApp.setTitle("Welcome, {username}!");
            }});
        </script>
        <h3>Welcome, {username}! Generate images based on prompts.</h3>
        """)
        
        
        gr.HTML("""
        <style>
            footer.svelte-1rjryqp {
                display: none !important;
            }
        </style>
        """)

    return interface

def launch_gradio(username):
    interface = create_gradio_interface(username)
    interface.launch()

def extract_username_from_url(url):
    parsed_url = urlparse(url)
    params = parse_qs(parsed_url.query)
    return params.get('username', ["Guest"])[0]

def get_username_from_url():
    # Placeholder URL; replace with actual URL or method to get URL in deployment
    url = 'https://measmonysuon-imagen.hf.space/?username=MoMo'
    username = extract_username_from_url(url)
    logger.info(f"Extracted username: {username}")
    return username

username = get_username_from_url()
launch_gradio(username)