CerealBoxMaker / app.py
AP123's picture
Update app.py
633ca23
raw
history blame
1.87 kB
import gradio as gr
import torch
import numpy as np
from PIL import Image
import random
from diffusers import DiffusionPipeline
# Initialize DiffusionPipeline with LoRA weights
pipeline = DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0")
pipeline.load_lora_weights("ostris/super-cereal-sdxl-lora")
def text_to_image(prompt):
generated_img = pipeline(prompt)
return generated_img
def create_cereal_box(input_image):
cover_img = input_image # This should already be a PIL Image
template_img = Image.open('CerealBoxMaker/template.jpeg')
# Cereal box creation logic
scaling_factor = 1.5
rect_height = int(template_img.height * 0.32)
new_width = int(rect_height * 0.70)
cover_resized = cover_img.resize((new_width, rect_height), Image.LANCZOS)
new_width_scaled = int(new_width * scaling_factor)
new_height_scaled = int(rect_height * scaling_factor)
cover_resized_scaled = cover_resized.resize((new_width_scaled, new_height_scaled), Image.LANCZOS)
left_x = int(template_img.width * 0.085)
left_y = int((template_img.height - new_height_scaled) // 2 + template_img.height * 0.012)
left_position = (left_x, left_y)
right_x = int(template_img.width * 0.82) - new_width_scaled
right_y = left_y
right_position = (right_x, right_y)
template_copy = template_img.copy()
template_copy.paste(cover_resized_scaled, left_position)
template_copy.paste(cover_resized_scaled, right_position)
# Convert to a numpy array for Gradio output
template_copy_array = np.array(template_copy)
return template_copy_array
def combined_function(prompt):
generated_img = text_to_image(prompt)
final_img = create_cereal_box(generated_img)
return final_img
# Create Gradio Interface
gr.Interface(fn=combined_function, inputs="text", outputs="image").launch()