import gradio as gr import os import sys import random import string import time from queue import Queue from threading import Thread import requests model_interface = gr.Interface.load("models/segmind/SSD-1B") API_URL = "https://api-inference.huggingface.co/models/segmind/SSD-1B" 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) # Existing code... import uuid # Import the UUID library # Existing code... # Existing code... request_counter = 0 # Global counter to track requests # Defining the image styles and default style IMAGE_STYLES = [ "No style", "Cinematic", "Photographic", "Anime", "Manga", "Digital Art", "Pixel art", "Fantasy art", "Neonpunk", "3D Model" ] DEFAULT_IMAGE_STYLE = "Cinematic" # ... (Previous code remains unchanged) def generate_txt2img(model_interface, prompt, is_negative=False, image_style="None style", steps=50, cfg_scale=7, seed=None): if image_style == "None style": payload = { "inputs": prompt + ", 8k", "is_negative": is_negative, "steps": steps, "cfg_scale": cfg_scale, "seed": seed if seed is not None else random.randint(-1, 2147483647) } elif image_style == "Cinematic": payload = { "inputs": prompt + ", realistic, detailed, textured, skin, hair, eyes, by Alex Huguet, Mike Hill, Ian Spriggs, JaeCheol Park, Marek Denko", "is_negative": is_negative + ", abstract, cartoon, stylized", "steps": steps, "cfg_scale": cfg_scale, "seed": seed if seed is not None else random.randint(-1, 2147483647) } elif image_style == "Digital Art": payload = { "inputs": prompt + ", faded , vintage , nostalgic , by Jose Villa , Elizabeth Messina , Ryan Brenizer , Jonas Peterson , Jasmine Star", "is_negative": is_negative + ", sharp , modern , bright", "steps": steps, "cfg_scale": cfg_scale, "seed": seed if seed is not None else random.randint(-1, 2147483647) } elif image_style == "Portrait": payload = { "inputs": prompt + ", soft light, sharp, exposure blend, medium shot, bokeh, (hdr:1.4), high contrast, (cinematic, teal and orange:0.85), (muted colors, dim colors, soothing tones:1.3), low saturation, (hyperdetailed:1.2), (noir:0.4), (natural skin texture, hyperrealism, soft light, sharp:1.2)", "is_negative": is_negative, "steps": steps, "cfg_scale": cfg_scale, "seed": seed if seed is not None else random.randint(-1, 2147483647) } image_bytes = requests.post(API_URL, headers=headers, json=payload).content image = Image.open(io.BytesIO(image_bytes)) return image # ... (Previous code remains unchanged) with gr.Blocks(css=".gradio-container {background-color: #fdf7e6;} footer{display:none !important;}",) as demo: with gr.Column(elem_id="col-container"): 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.Accordion("Advanced options", open=False): with gr.Row(): style_selection = gr.Radio( show_label=True, container=True, interactive=True, choices=IMAGE_STYLES, value=DEFAULT_IMAGE_STYLE, label='Image Style' ) negative_prompt = gr.Textbox(label="Negative Prompt (Optional)", placeholder="Example: blurry, unfocused", lines=2) 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="", show_label=False, show_share_button=False) output2 = gr.Image(label="", show_label=False, show_share_button=False) # Adjust the click event to use generate_txt2img function run.click(generate_txt2img, inputs=[prompt, negative_prompt, style_selection, noise_level], outputs=[output1]) run.click(generate_txt2img, inputs=[prompt, negative_prompt, style_selection, noise_level], outputs=[output2]) demo.launch(enable_queue=True, inline=True)