import os import random from PIL import Image from moviepy import ImageSequenceClip from dalle import text2im from typing import List def generate_image(prompt: str, size: tuple = (512, 512)) -> Image: """ Generates an image from the given prompt. """ response = text2im({ "prompt": prompt, "size": "1024x1024" }) image_data = response["images"][0] image = Image.open(image_data) image = image.resize(size) return image def save_images(image_list: List[Image], folder="generated_images") -> List[str]: """ Saves generated images to the specified folder. """ if not os.path.exists(folder): os.makedirs(folder) paths = [] for i, image in enumerate(image_list): path = os.path.join(folder, f"frame_{i}.png") image.save(path) paths.append(path) return paths def create_video(image_paths: List[str], output="output_video.mp4", fps=12): """ Creates a video from the list of image paths. """ clip = ImageSequenceClip(image_paths, fps=fps) clip.write_videofile(output, codec="libx264") def generate_video(prompt: str, num_frames: int = 20): """ Generates a video from a prompt. """ images = [] for i in range(num_frames): modified_prompt = f"{prompt}, transitioning scene, frame {i+1}/{num_frames}" images.append(generate_image(modified_prompt)) image_paths = save_images(images) create_video(image_paths) if __name__ == "__main__": prompt = "A beautiful futuristic cityscape at night with neon lights and flying cars." generate_video(prompt)