from PIL import Image import torch import numpy as np import tempfile import os import uuid # function to plot and save an AgentImage def plot_and_save_agent_image(agent_image, save_path=None): # Convert AgentImage to a raw PIL Image pil_image = agent_image.to_raw() # Plot the image using PIL's show method pil_image.show() # If save_path is provided, save the image if save_path: pil_image.save(save_path) print(f"Image saved to {save_path}") else: print("No save path provided. Image not saved.") def generate_prompts_for_object(object_name): prompts = { "past": f"Show an old version of a {object_name} from its early days.", "present": f"Show a {object_name} with from present with current features/design/technology.", "future": f"Show a futuristic version of a {object_name}, by predicting advanced features and futuristic design." } return prompts # Function to generate the car industry history def generate_object_history(object_name): images = [] # Get prompts for the object prompts = generate_prompts_for_object(object_name) # Generate sequential images and display them for time_period, frame in prompts.items(): print(f"Generating {time_period} frame: {frame}") result = agent.run(frame) # The tool generates the image # Append the image to the list for GIF creation images.append(result.to_raw()) # Ensure we're using raw image for GIF # Save each image with the appropriate name (past, present, future) image_filename = f"{object_name}_{time_period}.png" plot_and_save_agent_image(result, save_path=image_filename) # Create GIF from images gif_path = f"{object_name}_evolution.gif" images[0].save( gif_path, save_all=True, append_images=images[1:], duration=1000, # Duration in milliseconds for each frame loop=0 # Infinite loop ) # Return images and GIF path return images, gif_path