Spaces:
Sleeping
Sleeping
import gradio as gr | |
import torch | |
from diffusers import DiffusionPipeline | |
from PIL import Image, ImageDraw, ImageFont | |
# Load the model (make sure to use a model that exists on Hugging Face) | |
device = "cuda" if torch.cuda.is_available() else "cpu" | |
model = DiffusionPipeline.from_pretrained("CompVis/stable-diffusion-v1-4", torch_dtype=torch.float32).to(device) | |
def generate_image(caption): | |
# Generate the image from the caption | |
try: | |
with torch.no_grad(): | |
image = model(caption).images[0] | |
# Convert to PIL Image for drawing | |
image = image.convert("RGBA") | |
# Create a draw object | |
draw = ImageDraw.Draw(image) | |
# Define font size and color | |
font_size = 40 | |
font_color = "white" | |
# Load a font | |
font = ImageFont.load_default() # You can specify a TTF font file if needed | |
# Calculate text size and position | |
text_width, text_height = draw.textsize(caption, font=font) | |
text_position = ((image.width - text_width) // 2, 10) # Centered at the top | |
# Draw the text on the image | |
draw.text(text_position, caption, font=font, fill=font_color) | |
return image | |
except Exception as e: | |
print(f"Error generating image: {e}") | |
return None | |
# Create the Gradio interface | |
with gr.Blocks() as demo: | |
gr.Markdown("# Text to Image Generation with Meme Caption") | |
with gr.Row(): | |
caption_input = gr.Textbox(label="Enter your caption", placeholder="Type your caption here...") | |
generate_button = gr.Button("Generate Image") | |
output_image = gr.Image(label="Generated Image") | |
generate_button.click(fn=generate_image, inputs=caption_input, outputs=output_image) | |
# Launch the app | |
demo.launch() |