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.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.inputs.Image(type="file", label="Upload Images", multiple=True), outputs="file", title="Image to Video Converter", description="Upload multiple images to create a video." ) # Gradio 앱 실행 iface.launch()