Spaces:
Sleeping
Sleeping
import gradio as gr | |
from moviepy.editor import ImageSequenceClip | |
import tempfile | |
import os | |
import shutil # ์ด ๋ถ๋ถ์ ์ถ๊ฐ | |
def images_to_video(image_files): | |
temp_dir = tempfile.mkdtemp() | |
image_paths = [] | |
for i, image_file in enumerate(image_files): | |
image_path = os.path.join(temp_dir, f"image_{i}.png") | |
# ํ์ผ ๋ด์ฉ์ ๋ฐ์ดํธ๋ก ์ฐ๊ฑฐ๋ ์ด๋ฏธ ์กด์ฌํ๋ ํ์ผ์ ๋ณต์ฌ | |
if isinstance(image_file, bytes): | |
with open(image_path, "wb") as f: | |
f.write(image_file) | |
else: | |
# shutil ๋ชจ๋์ copy ํจ์ ์ฌ์ฉ | |
shutil.copy(image_file, image_path) | |
image_paths.append(image_path) | |
# ์ด๋ฏธ์ง ์ํ์ค๋ก๋ถํฐ ๋น๋์ค ํด๋ฆฝ ์์ฑ ๋ฐ ๊ธฐํ ๋ก์ง... | |
# ์ด๋ฏธ์ง ์ํ์ค๋ก๋ถํฐ ๋น๋์ค ํด๋ฆฝ ์์ฑ (๊ฐ ์ด๋ฏธ์ง์ ์ง์ ์๊ฐ์ 2์ด) | |
clip = ImageSequenceClip(image_paths, fps=0.5) # fps=0.5 => ๊ฐ ์ด๋ฏธ์ง๋ 2์ด ๋์ ๋ณด์ | |
# ๋น๋์ค ํ์ผ ์ ์ฅ | |
output_video_path = os.path.join(temp_dir, "output.mp4") | |
clip.write_videofile(output_video_path, fps=24) # 24fps๋ก ์ถ๋ ฅ ๋น๋์ค ์ ์ฅ | |
# ์์ฑ๋ ๋น๋์ค ํ์ผ ๊ฒฝ๋ก ๋ฐํ | |
return output_video_path | |
# Gradio ์ธํฐํ์ด์ค ์ ์ | |
with gr.Blocks() as demo: | |
with gr.Row(): | |
file_input = gr.File(label="Upload images") | |
video_output = gr.Video(label="Output video") | |
file_input.change(images_to_video, inputs=file_input, outputs=video_output) | |
demo.launch() | |