Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| # Daftar model dan ControlNet | |
| models = ["Model A", "Model B", "Model C"] | |
| vae = ["VAE A", "VAE B", "VAE C"] | |
| controlnet_types = ["Canny", "Depth", "Normal", "Pose"] | |
| # Fungsi placeholder | |
| def load_model(selected_model): | |
| return f"Model {selected_model} telah dimuat." | |
| def generate_image(prompt, neg_prompt, width, height, scheduler, num_steps, num_images, cfg_scale, seed, model): | |
| # Logika untuk menghasilkan gambar dari teks menggunakan model | |
| return [f"Gambar {i+1} untuk prompt '{prompt}' dengan model '{model}'" for i in range(num_images)], {"prompt": prompt, "neg_prompt": neg_prompt} | |
| def process_image(image, prompt, neg_prompt, model): | |
| # Logika untuk memproses gambar menggunakan model | |
| return f"Proses gambar dengan prompt '{prompt}' dan model '{model}'" | |
| def controlnet_process(image, controlnet_type, model): | |
| # Logika untuk memproses gambar menggunakan ControlNet | |
| return f"Proses gambar dengan ControlNet '{controlnet_type}' dan model '{model}'" | |
| with gr.Blocks(css= "style.css") as app: | |
| # Dropdown untuk memilih model di luar tab dengan lebar kecil | |
| with gr.Row(): | |
| model_dropdown = gr.Dropdown(choices=models, label="Model", elem_id="model-dropdown", value="Model B", scale=0.3) | |
| vae_dropdown = gr.Dropdown(choices=vae, label="VAE", elem_id="vae-dropdown", value="VAE C", scale=0.3) | |
| # Tab untuk Text-to-Image | |
| with gr.Tab("Text-to-Image"): | |
| # Prompt dan Neg Prompt | |
| with gr.Row(): | |
| with gr.Column(scale=1): # Scale 1 ensures full width | |
| prompt_input = gr.Textbox(label="Prompt", placeholder="Masukkan prompt teks", lines=2, elem_id="prompt-input") | |
| neg_prompt_input = gr.Textbox(label="Neg Prompt", placeholder="Masukkan negasi prompt", lines=2, elem_id="neg-prompt-input") | |
| generate_button = gr.Button("Generate", elem_id="generate-button", scale=0.13) | |
| with gr.Row(): | |
| with gr.Column(): | |
| # Konfigurasi | |
| scheduler_input = gr.Dropdown(choices=["Euler", "LMS", "DDIM"], label="Sampling method") | |
| num_steps_input = gr.Slider(minimum=1, maximum=100, step=1, label="Sampling steps", value=20) | |
| width_input = gr.Slider(minimum=64, maximum=2048, step=64, label="Width", value=512) | |
| height_input = gr.Slider(minimum=64, maximum=2048, step=64, label="Height", value=512) | |
| cfg_scale_input = gr.Slider(minimum=1, maximum=20, step=1, label="CFG Scale", value=7) | |
| seed_input = gr.Number(label="Seed", value=-1) | |
| num_images_input = gr.Slider(minimum=1, maximum=10, step=1, label="Batch size", value=1) | |
| with gr.Column(): | |
| # Gallery untuk output gambar | |
| output_gallery = gr.Gallery(label="Hasil Gambar") | |
| # Output teks JSON di bawah gallery | |
| output_text = gr.Textbox(label="Output JSON", placeholder="Hasil dalam format JSON", lines=2) | |
| def update_images(prompt, neg_prompt, width, height, scheduler, num_steps, num_images, cfg_scale, seed, model): | |
| # Update fungsi sesuai kebutuhan | |
| return generate_image(prompt, neg_prompt, width, height, scheduler, num_steps, num_images, cfg_scale, seed, model) | |
| generate_button.click(fn=update_images, inputs=[prompt_input, neg_prompt_input, width_input, height_input, scheduler_input, num_steps_input, num_images_input, cfg_scale_input, seed_input, model_dropdown, vae_dropdown], outputs=[output_gallery, output_text]) | |
| # Tab untuk Image-to-Image | |
| with gr.Tab("Image-to-Image"): | |
| with gr.Row(): | |
| with gr.Column(): | |
| image_input = gr.Image(label="Unggah Gambar") | |
| prompt_input_i2i = gr.Textbox(label="Prompt", placeholder="Masukkan prompt teks", lines=2) | |
| neg_prompt_input_i2i = gr.Textbox(label="Neg Prompt", placeholder="Masukkan negasi prompt", lines=2) | |
| generate_button_i2i = gr.Button("Proses Gambar") | |
| with gr.Column(): | |
| output_image_i2i = gr.Image(label="Hasil Gambar") | |
| def process_image_func(image, prompt, neg_prompt, model): | |
| # Update fungsi sesuai kebutuhan | |
| return process_image(image, prompt, neg_prompt, model) | |
| generate_button_i2i.click(fn=process_image_func, inputs=[image_input, prompt_input_i2i, neg_prompt_input_i2i, model_dropdown, vae_dropdown], outputs=output_image_i2i) | |
| # Tab untuk ControlNet | |
| with gr.Tab("ControlNet"): | |
| with gr.Row(): | |
| with gr.Column(): | |
| controlnet_dropdown = gr.Dropdown(choices=controlnet_types, label="Pilih Tipe ControlNet") | |
| controlnet_image_input = gr.Image(label="Unggah Gambar untuk ControlNet") | |
| controlnet_button = gr.Button("Proses dengan ControlNet") | |
| with gr.Column(): | |
| controlnet_output_image = gr.Image(label="Hasil ControlNet") | |
| def controlnet_process_func(image, controlnet_type, model): | |
| # Update fungsi sesuai kebutuhan | |
| return controlnet_process(image, controlnet_type, model) | |
| controlnet_button.click(fn=controlnet_process_func, inputs=[controlnet_image_input, controlnet_dropdown, model_dropdown, vae_dropdown], outputs=controlnet_output_image) | |
| # Jalankan antarmuka | |
| app.launch() |