import gradio as gr import os import sys from pathlib import Path from PIL import Image import re import numpy as np # Create directories if they don't exist if not os.path.exists('saved_prompts'): os.makedirs('saved_prompts') if not os.path.exists('saved_images'): os.makedirs('saved_images') # Function to generate a safe filename def generate_safe_filename(text): return re.sub('[^a-zA-Z0-9]', '_', text) # Function to load models from a text file def load_models_from_file(filename): with open(filename, 'r') as f: return [line.strip() for line in f] if __name__ == "__main__": models = load_models_from_file('models.txt') print(models) current_model = models[0] text_gen1 = gr.Interface.load("spaces/Omnibus/MagicPrompt-Stable-Diffusion_link") models2 = [gr.Interface.load(f"models/{model}", live=True, preprocess=False) for model in models] # Function to trigger text generation def text_it1(inputs, text_gen1=text_gen1): go_t1 = text_gen1(inputs) return (go_t1) # Function to set the current model def set_model(current_model): current_model = models[current_model] return gr.update(label=(f"{current_model}")) # Function to list saved prompts and images def list_saved_prompts_and_images(): saved_prompts = os.listdir('saved_prompts') saved_images = os.listdir('saved_images') html_str = "

Saved Prompts and Images:

" return html_str # Function to handle image generation and saving def send_it1(inputs, model_choice): proc1 = models2[model_choice] output1 = proc1(inputs) safe_filename = generate_safe_filename(inputs[0]) image_path = f"saved_images/{safe_filename}.png" prompt_path = f"saved_prompts/{safe_filename}.txt" with open(prompt_path, 'w') as f: f.write(inputs[0]) # Saving the image based on its type if isinstance(output1, np.ndarray): # If it's a numpy array Image.fromarray(np.uint8(output1)).save(image_path) elif isinstance(output1, Image.Image): # If it's already a PIL Image output1.save(image_path) else: print(f"Warning: Unexpected type {type(output1)} for output1.") return output1 # Gradio interface layout and logic with gr.Blocks() as myface: # (Omitted for brevity, similar to your original code) # Launch the Gradio interface myface.queue(concurrency_count=200) myface.launch(inline=True, show_api=False, max_threads=400)