import gradio as gr import random from random import choice import requests import base64 import io from PIL import Image import plotly.graph_objects as go import numpy as np from PIL import Image, ImageDraw import random import re url = "http://73.255.78.150:7909/sdapi/v1/txt2img" session_seed = None last_session_seed = None # Predefined arrays for design parameters and their corresponding values ALL_TITLES = [ 'Minimalism', 'Bauhaus', 'Organic Design', 'Brutalism', 'Mid-century Modern', 'Retro-Vintage', 'Futurism', 'Tesselated', 'Streamlined', 'Timeless', 'Industrial Chic', 'Art Deco', 'Elegant', 'Biomorphic Design', 'High Contrast', 'Deconstructivism', 'Zen Design', 'Pop Art', 'Cyberpunk', 'Sustainable Design', 'Angular', 'Textured', 'Symmetric', 'Utilitarian', 'Dynamic Energy Flow' ] ALL_VALUES = [ 1.5, 1.2, 0.8, 1.0, 0.5, -1.0, 0.3, -0.5, 1.1, -0.7, 0.9, 1.3, 0.2, -1.3, -0.9, -1.1, 0.7, 0.6, -0.8, 0.4, -0.2, 0.1, -1.2, 0.0, -0.4 ] # Base payload for API call base_payload = { "steps": 20, "seed": 1, "width": 768, "height": 512, } # New function to generate radar chart using Plotly def generate_figure(r_values, theta_values, chart_title): fig = go.Figure(data=go.Scatterpolar( r=r_values, theta=theta_values, mode='lines+markers', marker=dict(size=10), fill='toself') ) fig.update_layout( polar=dict(radialaxis=dict(visible=True, range=[0, 1.5])), showlegend=False, title=chart_title ) return fig # New function for generating the radar chart def display_radar_chart(input_parameters, randomize_values, randomize_titles, randomize_param_count, chart_title, param_count, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10): if randomize_param_count: param_count = random.randint(3, 10) # 🤖 Create a temporary array from comma-separated input_parameters if input_parameters: parameters = re.split(r'\s*,\s*', input_parameters.strip()) if len(parameters) > param_count: parameters = parameters[:param_count] elif randomize_titles: parameters = random.sample(ALL_TITLES, param_count) else: parameters = [] # 🤖 Fill in missing parameters based on param_count if len(parameters) < param_count: remaining_count = param_count - len(parameters) if randomize_titles: additional_params = random.sample(set(ALL_TITLES) - set(parameters), remaining_count) else: additional_params = ALL_TITLES[len(parameters):len(parameters) + remaining_count] parameters.extend(additional_params) elif len(parameters) > param_count: parameters = parameters[:param_count] # Existing code for randomizing values remains the same if randomize_values: r_values = random.sample(ALL_VALUES, len(parameters)) else: r_values = [param1, param2, param3, param4, param5, param6, param7, param8, param9, param10][:len(parameters)] chart_figure = generate_figure(r_values, parameters, chart_title) slider_labels = ", ".join([f"{parameters[i]}: {r_values[i]:.2f}" for i in range(len(r_values))]) return chart_figure, slider_labels def generate_image(prompt, steps, reset_seed, increment_seed): global session_seed global last_session_seed if reset_seed: if session_seed != -1: last_session_seed = session_seed session_seed = -1 elif not reset_seed and last_session_seed is not None: session_seed = last_session_seed elif session_seed is None: session_seed = random.randint(0, 10000) if increment_seed and session_seed != -1: session_seed += 1 last_session_seed = session_seed payload = { "prompt": prompt, "steps": steps, "seed": session_seed, "height": 768, "width": 1024, } response = requests.post(url, json=payload) response_data = response.json() try: image = Image.open(io.BytesIO(base64.b64decode(response_data['images'][0]))) return image except KeyError: error_message = response_data.get('error', 'Unknown error') error_image = Image.new('RGB', (512, 512), color=(73, 109, 137)) d = ImageDraw.Draw(error_image) d.text((10, 10), f"Error: {error_message}", fill=(255, 255, 0)) return error_image image_list = [f"Images/Image {i}.png" for i in range(1, 19)] def update_moodboard(btn_value): return {moodboard_image: choice(image_list)} with gr.Blocks() as app: gr.Markdown("# Magazine Layouts") with gr.Tab("Dynamic Dashboard"): with gr.Row(): gr.Textbox(lines=1, value="Dashboard: Dynamic View") gr.Dropdown(options=["Overview", "Details", "Summary"], label="Dashboard Mode") with gr.Row(): gr.Textbox(lines=1, value="Status: Active") gr.Slider(minimum=0, maximum=100, label="Dashboard Progress") # Image Generation Section with gr.Column(): gr.Markdown("### Image Generation") prompt_input = gr.Textbox(lines=2, placeholder="Imagine something...", label="Prompt") steps_input = gr.Slider(minimum=15, maximum=50, step=15, default=5, label="Steps") reset_seed_input = gr.Checkbox(label="Randomize Composition") increment_seed_input = gr.Checkbox(label="New Composition") img_output = gr.Image(label="Generated Image") # Radar Chart Section with gr.Column(): gr.Markdown("### Radar Chart") input_parameters = gr.Textbox(placeholder="Enter parameters, separated by commas", label="Parameters") randomize_values = gr.Checkbox(label="Randomize Values") chart_title = gr.Textbox(value="Radar Chart", label="Chart Title") param_count = gr.Slider(minimum=3, maximum=10, step=1, label="Parameter Count") radar_output = gr.Plot(label="Radar Chart") with gr.Row(): gr.Image(choice(image_list)) gr.Textbox(lines=4, value="Dashboard Insights: Real-time updates and metrics") gr.Button("Refresh Dashboard", label="Refresh Dashboard") with gr.Tab("API Call Interface"): with gr.Blocks() as main_blocks: with gr.Row(): with gr.Column(): img_output = gr.Image(label="Generated Image") with gr.Row(): with gr.Column(scale=1): prompt_input = gr.Textbox(lines=2, placeholder="Imagine something...", label="Prompt") steps_input = gr.Slider(minimum=15, maximum=50, step=15, default=5, label="Steps") with gr.Column(scale=1): reset_seed_input = gr.Checkbox(label="Randomize Composition") increment_seed_input = gr.Checkbox(label="New Composition") iface = gr.Interface( fn=generate_image, inputs=[prompt_input, steps_input, reset_seed_input, increment_seed_input], outputs=[img_output], live=False, layout=main_blocks ) # Design Proposal Board with Multi-layered Layouts with gr.Tab("Design Proposal Board"): with gr.Row(): gr.Textbox(lines=1, value="Project: Redesign UI") gr.Dropdown(options=["Planning", "Execution", "Review"], label="Project Stage") with gr.Row(): gr.Textbox(lines=1, value="Timeline: 3 months") gr.Slider(minimum=0, maximum=100, label="Progress") gr.Image(choice(image_list)) gr.Button("View Milestones", label="View Milestones") gr.Textbox(lines=4, value="Goals: Improve user engagement by 20%") with gr.Tab("The Minimalist Layout"): with gr.Column(): gr.Markdown("## Minimalist") gr.Image("Images/Image 1.png") gr.Textbox(lines=4, value="It was a stormy night, and the vintage car roared down the highway.") with gr.Tab("The Grid Layout"): with gr.Row(): with gr.Column(scale=1): gr.Image("Images/Image 2.png") gr.Textbox(lines=4, value="The old leather seats had stories to tell.") with gr.Column(scale=1): gr.Image("Images/Image 3.png") gr.Textbox(lines=4, value="With every curve and turn, the car seemed to whisper.") with gr.Tab("The Asymmetrical Layout"): with gr.Row(): with gr.Column(scale=2): gr.Markdown("## Artistic Layout") gr.Image("Images/Image 4.png") with gr.Column(scale=1): gr.Image("Images/Image 5.png") gr.Textbox(lines=3, value="As the dawn broke, the car finally stopped.") with gr.Tab("The F-Layout"): with gr.Row(): with gr.Column(scale=3): gr.Image("Images/Image 6.png") with gr.Column(scale=1): gr.Textbox(lines=4, value="It was a stormy night, and the vintage car roared down the highway.") with gr.Tab("The Radial Layout"): with gr.Row(): with gr.Column(scale=1): gr.Image("Images/Image 9.png") with gr.Column(scale=1): gr.Image("Images/Image 10.png") with gr.Row(): with gr.Column(scale=1): gr.Image("Images/Image 11.png") with gr.Column(scale=1): gr.Textbox(lines=4, value="As the dawn broke, the car finally stopped.") with gr.Column(scale=1): gr.Image("Images/Image 12.png") with gr.Tab("Trading Card Layout 1"): with gr.Column(): gr.Image(choice(image_list)) gr.Textbox(lines=1, value="Car Model: Mustang") gr.Textbox(lines=1, value="Year: 1965") gr.Textbox(lines=2, value="Stats: Speed 200mph, Mileage 15mpg") gr.Textbox(lines=3, value="The Mustang is a classic American muscle car.") # Museum Art Gallery: Spotlight Layout with gr.Tab("Spotlight Layout"): gr.Image(choice(image_list)) with gr.Row(): gr.Textbox(lines=1, value="Art: Moonlit Sonata") gr.Textbox(lines=1, value="Artist: L. Vinci") gr.Textbox(lines=1, value="Year: 1911") gr.Textbox(lines=3, value="A single spotlight shines on this masterpiece, illuminating its intricate details and vivid colors.") # Museum Art Gallery: Interactive Kiosk Layout with gr.Tab("Interactive Kiosk Layout"): with gr.Row(): with gr.Column(scale=1): gr.Image(choice(image_list)) with gr.Column(scale=1): gr.Textbox(lines=1, value="Art: Pixelated Reality") gr.Textbox(lines=1, value="Artist: G. O'Keeffe") gr.Textbox(lines=1, value="Year: 2001") gr.Textbox(lines=4, value="Step up to the interactive kiosk to dive deeper into the story and significance of the artwork.") # Moodboard for a Designer with gr.Tab("Moodboard for a Designer"): with gr.Row(): gr.Image(choice(image_list)) gr.Textbox(lines=1, value="Color: #FF5733") gr.Textbox(lines=1, value="Font: Arial") with gr.Row(): gr.Textbox(lines=1, value="Quote: Design is intelligence made visible.") gr.Image(choice(image_list)) gr.Textbox(lines=1, value="Project: Logo Design") # Comic Book with Dynamic Content Loading with gr.Tab("Comic Book"): with gr.Row(): gr.Textbox(lines=1, value="Title: The Adventures of Grado") gr.Image(choice(image_list)) with gr.Row(): gr.Textbox(lines=1, value="BOOM!") gr.Image(choice(image_list)) gr.Textbox(lines=2, value="Character: Oh no!") gr.Button("Next Page", label="Next Page") gr.Textbox(lines=1, value="Caption: To be continued...") with gr.Tab("Radar Chart"): with gr.Row(): input_parameters = gr.Textbox(placeholder="Enter parameters, separated by commas", label="Parameters") randomize_values = gr.Checkbox(label="Randomize Values") randomize_titles = gr.Checkbox(label="Randomize Titles") randomize_param_count = gr.Checkbox(label="Randomize Parameter Count") chart_title = gr.Textbox(value="Radar Chart", label="Chart Title") param_count = gr.Slider(minimum=3, maximum=10, step=1, label="Parameter Count") param1 = gr.Slider(minimum=-1.5, maximum=1.5, step=0.1, label="Parameter 1") param2 = gr.Slider(minimum=-1.5, maximum=1.5, step=0.1, label="Parameter 2") param3 = gr.Slider(minimum=-1.5, maximum=1.5, step=0.1, label="Parameter 3") param4 = gr.Slider(minimum=-1.5, maximum=1.5, step=0.1, label="Parameter 4") param5 = gr.Slider(minimum=-1.5, maximum=1.5, step=0.1, label="Parameter 5") param6 = gr.Slider(minimum=-1.5, maximum=1.5, step=0.1, label="Parameter 6") param7 = gr.Slider(minimum=-1.5, maximum=1.5, step=0.1, label="Parameter 7") param8 = gr.Slider(minimum=-1.5, maximum=1.5, step=0.1, label="Parameter 8") param9 = gr.Slider(minimum=-1.5, maximum=1.5, step=0.1, label="Parameter 9") param10 = gr.Slider(minimum=-1.5, maximum=1.5, step=0.1, label="Parameter 10") radar_output = gr.Plot(label="Radar Chart") slider_labels_output = gr.Textbox(label="Prompt: Slider Labels") radar_interface = gr.Interface( fn=display_radar_chart, inputs=[input_parameters, randomize_values, randomize_titles, randomize_param_count, chart_title, param_count, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10], # Include param6 to param10 outputs=[radar_output, slider_labels_output] ) app.launch()