|
import gradio as gr |
|
from diffusers import DiffusionPipeline |
|
from PIL import Image |
|
import torch |
|
|
|
device = "cuda" if torch.cuda.is_available() else "cpu" |
|
dtype = torch.float16 if device == "cuda" else torch.float32 |
|
variant = "fp16" if device == "cuda" else None |
|
|
|
pipe = DiffusionPipeline.from_pretrained( |
|
"stabilityai/stable-diffusion-xl-base-1.0", |
|
torch_dtype=dtype, |
|
variant=variant |
|
).to(device) |
|
|
|
pipe.load_lora_weights("artificialguybr/TshirtDesignRedmond-V2") |
|
|
|
def infer(color_prompt, phone_type_prompt, design_prompt): |
|
prompt = ( |
|
f"A single vertical {color_prompt} colored {phone_type_prompt} back cover featuring a bold {design_prompt} design on the front, hanging on the plain wall. The soft light and shadows, creating a striking contrast against the minimal background, evoking modern sophistication." |
|
) |
|
image = pipe(prompt).images[0] |
|
message = "Design generated successfully!" |
|
return image, message |
|
|
|
def save_design(image): |
|
if image is None: |
|
return "No image to save. Please generate a design first." |
|
file_path = "saved_design.png" |
|
image.save(file_path) |
|
return f"Design saved as {file_path}!" |
|
|
|
with gr.Blocks() as interface: |
|
gr.Markdown("# **AI Phone Cover Designer**") |
|
with gr.Row(): |
|
with gr.Column(scale=1): |
|
color_prompt = gr.Textbox(label="Color") |
|
phone_type_prompt = gr.Textbox(label="Mobile Type") |
|
design_prompt = gr.Textbox(label="Design Details") |
|
generate_button = gr.Button("Generate Design") |
|
save_button = gr.Button("Save Design") |
|
with gr.Column(scale=1): |
|
output_image = gr.Image(label="Generated Design") |
|
output_message = gr.Textbox(label="Status", interactive=False) |
|
|
|
generate_button.click( |
|
infer, |
|
inputs=[color_prompt, phone_type_prompt, design_prompt], |
|
outputs=[output_image, output_message], |
|
) |
|
save_button.click( |
|
save_design, |
|
inputs=[output_image], |
|
outputs=output_message, |
|
) |
|
|
|
interface.launch(debug=True) |