Gradio-test / app.py
DamarJati's picture
Update app.py
39c7af4 verified
raw
history blame
5.24 kB
import gradio as gr
# Daftar model dan ControlNet
models = ["Model A", "Model B", "Model 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() as app:
# Dropdown untuk memilih model di luar tab dengan lebar kecil
with gr.Row():
model_dropdown = gr.Dropdown(choices=models, label="Pilih Model", elem_id="model-dropdown", 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], 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], 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], outputs=controlnet_output_image)
# Jalankan antarmuka
app.launch()