aiqtest1 / app.py
seawolf2357's picture
Update app.py
25abb2d verified
raw
history blame
1.42 kB
import gradio as gr
import imageio
import numpy as np
from PIL import Image
def resize_image(image, target_width, target_height):
"""
์ด๋ฏธ์ง€๋ฅผ ์ง€์ •๋œ ํฌ๊ธฐ๋กœ ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค.
"""
image_pil = Image.fromarray(image).resize((target_width, target_height), Image.ANTIALIAS)
return np.array(image_pil)
def create_video(images):
"""
์ฃผ์–ด์ง„ ์ด๋ฏธ์ง€ ๋ฆฌ์ŠคํŠธ๋กœ๋ถ€ํ„ฐ ๋น„๋””์˜ค๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
๋ชจ๋“  ์ด๋ฏธ์ง€๋Š” ๋น„๋””์˜ค์— ์ถ”๊ฐ€๋˜๊ธฐ ์ „์— ๋™์ผํ•œ ํฌ๊ธฐ๋กœ ์กฐ์ •๋ฉ๋‹ˆ๋‹ค.
"""
target_width = 1920
target_height = 1080
with imageio.get_writer('output_video.mp4', fps=2) as video:
for img in images:
img_resized = resize_image(img, target_width, target_height)
video.append_data(img_resized)
return 'output_video.mp4'
def process_images(image_files):
"""
์—…๋กœ๋“œ๋œ ์ด๋ฏธ์ง€ ํŒŒ์ผ๋“ค์„ ์ฒ˜๋ฆฌํ•˜์—ฌ ๋น„๋””์˜ค๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
"""
images = [imageio.v3.imread(image_file) for image_file in image_files]
video_file = create_video(images)
return video_file
# Gradio ์ธํ„ฐํŽ˜์ด์Šค ์ •์˜
iface = gr.Interface(
fn=process_images,
inputs=gr.File(label="Upload Images", type="file", multiple_files=True), # ์ˆ˜์ •๋œ ๋ถ€๋ถ„
outputs="file",
title="Image to Video Converter",
description="Upload multiple images to create a video."
)
# Gradio ์•ฑ ์‹คํ–‰
iface.launch()