Spaces:
Runtime error
Runtime error
| from diffusers import StableDiffusionPipeline | |
| from PIL import Image | |
| import imageio | |
| import gradio as gr | |
| import torch | |
| # Dynamic device and data type allocation | |
| device = "cuda" if torch.cuda.is_available() else "cpu" | |
| dtype = torch.float16 if torch.cuda.is_available() else torch.float32 | |
| # Load Stable Diffusion model | |
| model_id = "runwayml/stable-diffusion-v1-5" # Replace with your desired model ID | |
| pipe = StableDiffusionPipeline.from_pretrained(model_id, torch_dtype=dtype, safety_checker=None) | |
| pipe.to(device) | |
| def generate_frames(prompt, num_frames=5, style="realistic"): | |
| """ | |
| Generate coherent frames for animation. | |
| """ | |
| frames = [] | |
| for i in range(num_frames): | |
| frame_prompt = f"{prompt}, frame {i+1}, {style}" | |
| image = pipe(frame_prompt).images[0] | |
| frame_path = f"frame_{i+1}.png" | |
| image.save(frame_path) | |
| frames.append(frame_path) | |
| return frames | |
| def create_animation(frames, output_path="output.gif", duration=500): | |
| """ | |
| Combine frames into an animated GIF. | |
| """ | |
| images = [Image.open(frame) for frame in frames] | |
| images[0].save(output_path, save_all=True, append_images=images[1:], duration=duration, loop=0) | |
| return output_path | |
| def generate_gif(prompt, num_frames, style): | |
| """ | |
| Generate an animation GIF from user input. | |
| """ | |
| frames = generate_frames(prompt, num_frames, style) | |
| gif_path = create_animation(frames) | |
| return gif_path | |
| # Gradio Interface | |
| interface = gr.Interface( | |
| fn=generate_gif, | |
| inputs=[ | |
| gr.Textbox(label="Story or Prompt", placeholder="Enter your short story or prompt here..."), | |
| gr.Slider(2, 10, value=5, label="Number of Frames"), | |
| gr.Textbox(label="Style", placeholder="e.g., realistic, cartoon, surreal") | |
| ], | |
| outputs=gr.File(label="Download Your Animation"), | |
| title="Text-to-Animation Generator", | |
| description="Generate short animations (GIFs) from a story or prompt using Stable Diffusion." | |
| ) | |
| # Run the app | |
| if __name__ == "__main__": | |
| interface.launch() |