Spaces:
Paused
Paused
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) | |
# Ruta completa del archivo en el bucket | |
s3_key = "public/" + image_name | |
# Sube la imagen al bucket de S3 | |
s3.upload_fileobj(image_buffer, S3_BUCKET_NAME, s3_key) | |
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() | |