Spaces:
Running
Running
import gradio as gr | |
import torch | |
from diffusers import StableDiffusionPipeline, DiffusionPipeline | |
import os | |
# Load Text-to-Image Model (Redshift Diffusion) | |
device = "cuda" if torch.cuda.is_available() else "cpu" | |
image_pipe = StableDiffusionPipeline.from_pretrained( | |
"nitrosocke/redshift-diffusion", torch_dtype=torch.float16 if torch.cuda.is_available() else torch.float32 | |
).to(device) | |
# Load Image-to-Video Model (Zeroscope v2 XL) | |
video_model = DiffusionPipeline.from_pretrained( | |
"cerspense/zeroscope_v2_XL", torch_dtype=torch.float16 if torch.cuda.is_available() else torch.float32 | |
).to(device) | |
# Function to Generate Image from Text | |
def generate_image(prompt): | |
image = image_pipe(prompt).images[0] | |
image_path = "generated_image.png" | |
image.save(image_path) | |
return image_path | |
# Function to Convert Image to Video | |
def generate_video(image_path): | |
image = image_pipe(prompt).images[0] # Reload image for video generation | |
video_frames = video_model(image) # Generate video frames | |
video_path = "generated_video.mp4" | |
video_frames.save(video_path) # Save output video | |
return video_path | |
# Gradio Interface | |
with gr.Blocks() as demo: | |
gr.Markdown("## 🎨 AI Cartoon Image & Video Generator") | |
with gr.Row(): | |
prompt_input = gr.Textbox(label="Enter Text Prompt", placeholder="A 3D cartoon cat playing in a park") | |
generate_image_btn = gr.Button("Generate Image") | |
image_output = gr.Image(label="Generated Image") | |
with gr.Row(): | |
generate_video_btn = gr.Button("Convert to Video") | |
video_output = gr.Video(label="Generated Video") | |
download_image = gr.File(label="Download Image") | |
download_video = gr.File(label="Download Video") | |
generate_image_btn.click(generate_image, inputs=[prompt_input], outputs=[image_output, download_image]) | |
generate_video_btn.click(generate_video, inputs=[image_output], outputs=[video_output, download_video]) | |
demo.launch() | |