Spaces:
Runtime error
Runtime error
| import torch | |
| from PIL import Image, ImageDraw, ImageFont | |
| import gradio as gr | |
| from diffusers import StableDiffusionPipeline | |
| # Load Stable Diffusion model | |
| pipe = StableDiffusionPipeline.from_pretrained( | |
| "runwayml/stable-diffusion-v1-5", torch_dtype=torch.float16 | |
| ).to("cuda" if torch.cuda.is_available() else "cpu") | |
| # Function to add label | |
| def add_label_to_image(image, label): | |
| draw = ImageDraw.Draw(image) | |
| try: | |
| font = ImageFont.truetype("/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf", 30) | |
| except: | |
| font = ImageFont.load_default() | |
| position = (20, image.height - 50) | |
| draw.rectangle([position, (position[0]+400, position[1]+40)], fill=(0, 0, 0, 180)) | |
| draw.text(position, label, font=font, fill="white") | |
| return image | |
| # Generate prompt images | |
| def generate_object_history(object_name): | |
| prompts = { | |
| "past": f"An old version of a {object_name}, vintage, old-fashioned", | |
| "present": f"A modern {object_name}, realistic, current design", | |
| "future": f"A futuristic {object_name}, sci-fi, advanced design" | |
| } | |
| images = [] | |
| pil_images = [] | |
| for period, prompt in prompts.items(): | |
| image = pipe(prompt).images[0] | |
| labeled_image = add_label_to_image(image, f"{object_name.title()} - {period.title()}") | |
| filename = f"{object_name}_{period}.png" | |
| labeled_image.save(filename) | |
| images.append((filename, f"{object_name.title()} - {period.title()}")) | |
| pil_images.append(labeled_image) | |
| gif_path = f"{object_name}_evolution.gif" | |
| pil_images[0].save(gif_path, save_all=True, append_images=pil_images[1:], duration=1000, loop=0) | |
| return images, gif_path | |
| # Gradio Interface | |
| def create_gradio_interface(): | |
| with gr.Blocks() as demo: | |
| gr.Markdown("# TimeMetamorphy: Object Evolution Visualizer") | |
| object_name_input = gr.Textbox(label="Enter an object name (e.g., bicycle, phone)") | |
| generate_button = gr.Button("Generate Evolution") | |
| image_gallery = gr.Gallery(label="Generated Images", columns=3, rows=1) | |
| gif_output = gr.Image(label="Generated GIF") | |
| generate_button.click(fn=generate_object_history, | |
| inputs=[object_name_input], | |
| outputs=[image_gallery, gif_output]) | |
| return demo | |
| demo = create_gradio_interface() | |
| demo.launch(share=True) | |