krishnasivaborra's picture
Create app.py
cfe992b verified
Raw
History Blame Contribute Delete
1.44 kB
import gradio as gr
import os
import cv2
from PIL import Image
import tempfile
def images_to_video(image_files, fps):
temp_dir = tempfile.mkdtemp()
image_paths = []
# Save uploaded images to temp folder
for idx, file in enumerate(image_files):
img = Image.open(file.name).convert("RGB")
img_path = os.path.join(temp_dir, f"img_{idx:03d}.png")
img.save(img_path)
image_paths.append(img_path)
if not image_paths:
return "No images uploaded!"
# Get size from first image
first_image = cv2.imread(image_paths[0])
height, width, _ = first_image.shape
video_path = os.path.join(temp_dir, "output_video.mp4")
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
video = cv2.VideoWriter(video_path, fourcc, fps, (width, height))
for path in image_paths:
img = cv2.imread(path)
video.write(img)
video.release()
return video_path
# Gradio interface
iface = gr.Interface(
fn=images_to_video,
inputs=[
gr.File(file_types=["image"], file_count="multiple", label="Upload Images"),
gr.Slider(minimum=1, maximum=60, value=10, label="FPS (frames per second)")
],
outputs=gr.Video(label="Generated Video"),
title="🖼️➡️🎥 Image to Video Converter",
description="Upload images and turn them into a video. Because who has time for manual editing?"
)
if __name__ == "__main__":
iface.launch()