| import gradio as gr |
| import os |
| import sys |
| import random |
| import string |
| import time |
| from queue import Queue |
| from threading import Thread |
|
|
| text_gen = gr.Interface.load("models/Gustavosta/MagicPrompt-Stable-Diffusion") |
| proc1 = gr.Interface.load("models/dreamlike-art/dreamlike-photoreal-2.0") |
|
|
| def restart_script_periodically(): |
| while True: |
| random_time = random.randint(540, 600) |
| time.sleep(random_time) |
| os.execl(sys.executable, sys.executable, *sys.argv) |
|
|
| restart_thread = Thread(target=restart_script_periodically, daemon=True) |
| restart_thread.start() |
|
|
| queue = Queue() |
| queue_threshold = 100 |
|
|
| def add_random_noise(prompt, noise_level=0.00): |
| if noise_level == 0: |
| noise_level = 0.00 |
| percentage_noise = noise_level * 5 |
| num_noise_chars = int(len(prompt) * (percentage_noise / 100)) |
| noise_indices = random.sample(range(len(prompt)), num_noise_chars) |
| prompt_list = list(prompt) |
| noise_chars = list(string.ascii_letters + string.punctuation + ' ' + string.digits) |
| noise_chars.extend(['😍', '💩', '😂', '🤔', '😊', '🤗', '😭', '🙄', '😷', '🤯', '🤫', '🥴', '😴', '🤩', '🥳', '😔', '😩', '🤪', '😇', '🤢', '😈', '👹', '👻', '🤖', '👽', '💀', '🎃', '🎅', '🎄', '🎁', '🎂', '🎉', '🎈', '🎊', '🎮', '❤️', '💔', '💕', '💖', '💗', '🐶', '🐱', '🐭', '🐹', '🦊', '🐻', '🐨', '🐯', '🦁', '🐘', '🔥', '🌧️', '🌞', '🌈', '💥', '🌴', '🌊', '🌺', '🌻', '🌸', '🎨', '🌅', '🌌', '☁️', '⛈️', '❄️', '☀️', '🌤️', '⛅️', '🌥️', '🌦️', '🌧️', '🌩️', '🌨️', '🌫️', '☔️', '🌬️', '💨', '🌪️', '🌈']) |
| for index in noise_indices: |
| prompt_list[index] = random.choice(noise_chars) |
| return "".join(prompt_list) |
|
|
| |
|
|
| import uuid |
|
|
| |
|
|
| |
|
|
| request_counter = 0 |
|
|
| def send_it1(inputs, noise_level, proc=proc1): |
| global request_counter |
| request_counter += 1 |
| timestamp = f"{time.time()}_{request_counter}" |
| prompt_with_noise = add_random_noise(inputs, noise_level) + f" - {timestamp}" |
| while queue.qsize() >= queue_threshold: |
| time.sleep(2) |
| queue.put(prompt_with_noise) |
| output = proc(prompt_with_noise) |
| return output |
| import random |
|
|
| import random |
| import time |
|
|
| |
|
|
| import random |
| import time |
|
|
| |
|
|
| def get_prompts(prompt_text): |
| global request_counter |
| request_counter += 1 |
| timestamp = f"{time.time()}_{request_counter}" |
| |
| options = [ |
| "Cyberpunk android", |
| "2060", |
| "newyork", |
| ", style of laurie greasley" , "studio ghibli" , "akira toriyama" , "james gilleard" , "genshin impact" , "trending pixiv fanbox" , "acrylic palette knife, 4k, vibrant colors, devinart, trending on artstation, low details" |
| ", Editorial Photography, Shot on 70mm lens, Depth of Field, Bokeh, DOF, Tilt Blur, Shutter Speed 1/1000, F/22, 32k, Super-Resolution, award winning,", |
| ", high detail, warm lighting, godrays, vivid, beautiful, trending on artstation, by jordan grimmer, huge scene, grass, art greg rutkowski ", |
| ", highly detailed, digital painting, artstation, illustration, art by artgerm and greg rutkowski and alphonse mucha.", |
| ", Charlie Bowater, stanley artgerm lau, a character portrait, sots art, sharp focus, smooth, aesthetic, extremely detailed, octane render,solo, dark industrial background, rtx, rock clothes, cinematic light, intricate detail, highly detailed, high res, detailed facial features", |
| ", portrait photograph" , "realistic" , "concept art" , "elegant, highly detailed" , "intricate, sharp focus, depth of field, f/1. 8, 85mm, medium shot, mid shot, (((professionally color graded)))" ," sharp focus, bright soft diffused light" , "(volumetric fog),", |
| ",Cinematic film still" ," (dark city street:1.2)" , "(cold colors), damp, moist, intricate details" ,"shallow depth of field, [volumetric fog]" , "cinematic lighting, reflections, photographed on a Canon EOS R5, 50mm lens, F/2.8, HDR, 8k resolution" , "cinematic film still from cyberpunk movie" , "volumetric fog, (RAW, analog, masterpiece, best quality, soft particles, 8k, flawless perfect face, intricate details" , "trending on artstation, trending on cgsociety, dlsr, ultra sharp, hdr, rtx, antialiasing, canon 5d foto))" , "((skin details, high detailed skin texture))" , "(((perfect face))), (perfect eyes)))", |
|
|
| |
| ] |
|
|
| if prompt_text: |
| chosen_option = random.choice(options) |
| return text_gen(f"{prompt_text}, {chosen_option} - {timestamp}") |
| else: |
| return text_gen("", timestamp) |
|
|
|
|
|
|
| |
|
|
| |
|
|
| with gr.Blocks(css=".gradio-container {background-color: #fdf7e6;} footer{display:none !important;}",) as demo: |
| gr.HTML(""" |
| <div style="text-align: center; max-width: 700px; margin: 0 auto;"> |
| <div |
| style=" |
| display: inline-flex; |
| align-items: center; |
| gap: 0.8rem; |
| font-size: 1.75rem; |
| " |
| > |
| <div> |
| <h1 style="font-weight: 900; margin-bottom: 7px; margin-top: 5px;"> |
| Dreamlike Photoreal 2.0 |
| </h1> |
| </div> |
| </div> |
| </div> |
| <p style="margin-bottom: 10px; font-size: 96%"> |
| Noise Level: Controls how much randomness is added to the input before it is sent to the model. Higher noise level produces more diverse outputs, while lower noise level produces similar outputs, |
| |
| </p> |
| |
| </div> |
| """) |
|
|
| with gr.Column(elem_id="col-container"): |
| with gr.Row(variant="compact"): |
| input_text = gr.Textbox( |
| lines=8, |
| label="Short Prompt", |
| show_label=False, |
| max_lines=10, |
| placeholder="Enter a basic idea and click 'Magic Prompt'. Got no ideas? No problem, Simply just hit the magic button!", |
| ).style( |
| container=False, |
| textarea={'height': '400px'} |
| ) |
| see_prompts = gr.Button("✨ Magic Prompt ✨").style(full_width=False) |
|
|
| with gr.Row(variant="compact"): |
| prompt = gr.Textbox( |
| lines=8, |
| label="Enter your prompt", |
| show_label=False, |
| max_lines=10, |
| placeholder="Full Prompt", |
| ).style( |
| container=False, |
| textarea={'height': '400px'} |
| ) |
| run = gr.Button("Generate Images").style(full_width=False) |
|
|
| with gr.Row(): |
| with gr.Row(): |
| noise_level = gr.Slider(minimum=0.0, maximum=3, step=0.1, label="Noise Level") |
|
|
| with gr.Row(): |
| with gr.Row(): |
| output1 = gr.Image(label="Dreamlike Diffusion 1.0", show_label=False, show_share_button=False) |
| output2 = gr.Image(label="Dreamlike Diffusion 1.0", show_label=False, show_share_button=False) |
|
|
| see_prompts.click(get_prompts, inputs=[input_text], outputs=[prompt], queue=False) |
| run.click(send_it1, inputs=[prompt, noise_level], outputs=[output1]) |
| run.click(send_it1, inputs=[prompt, noise_level], outputs=[output2]) |
| gr.HTML(""" |
| <div class="footer" style="margin-bottom: 45px; |
| margin-top: 35px; |
| text-align: center; |
| border-bottom: 1px solid #e5e5e5" |
| > |
| <p style="font-size: .8rem; |
| display: inline-block; |
| padding: 0 10px; |
| transform: translateY(10px); |
| background: white" > Demo for <a href="https://huggingface.co/dreamlike-art/dreamlike-photoreal-2.0">Dreamlike Photoreal 2.0</a> Stable Diffusion model |
| </p> |
| </div> |
| <div class="acknowledgments" style="margin: 1.25em 0 .25em 0; |
| |
| font-size: 96%"> |
| <p> ❤️Unleash your creative side and generate mesmerizing images with just a few clicks! Enter a spark of inspiration in the "Basic Idea" text box and click the "Magic Prompt" button to elevate it to a polished masterpiece. Make any final tweaks in the "Full Prompt" box and hit the "Generate Images" button to watch your vision come to life. Experiment with the "Noise Level" for a diverse range of outputs, from similar to wildly unique. Let the fun begin!❤️ |
| </p> |
| </div> |
| """) |
| |
| |
| demo.launch(enable_queue=True, inline=True) |
|
|