import gradio as gr import torch from diffusers import StableDiffusionPipeline import boto3 from io import BytesIO import os AWS_ACCESS_KEY_ID = os.getenv("AWS_ACCESS_KEY_ID") AWS_SECRET_ACCESS_KEY = os.getenv("AWS_SECRET_ACCESS_KEY") S3_BUCKET_NAME = os.getenv("BUCKET_NAME") model_id = "CompVis/stable-diffusion-v1-4" device = "cuda" if torch.cuda.is_available() else "cpu" pipe = StableDiffusionPipeline.from_pretrained( model_id, torch_dtype=torch.float32) pipe = pipe.to(device) def text_to_image(text): # Crea una instancia del cliente de S3 s3 = boto3.client('s3', aws_access_key_id=AWS_ACCESS_KEY_ID, aws_secret_access_key=AWS_SECRET_ACCESS_KEY) def save_image_to_s3(image, image_name): # Crea un objeto de BytesIO para almacenar la imagen image_buffer = BytesIO() image.save(image_buffer, format='PNG') image_buffer.seek(0) # Sube la imagen al bucket de S3 s3.upload_fileobj(image_buffer, S3_BUCKET_NAME, image_name) def generator_image(text): prompt = text image = pipe(prompt).images[0] image_name = '-'.join(prompt.split()) + ".png" # Guarda la imagen en S3 save_image_to_s3(image, image_name) return image_name def generator_image_interface(text): image_name = generator_image(text) return f"Imagen generada: {image_name}" # generate image generator_image_interface(text); iface = gr.Interface(fn=text_to_image, inputs="text", outputs="text") iface.launch()