generatorImage / app.py
SAUL19's picture
Update app.py
b2e5b52
raw
history blame
1.68 kB
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()