Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| from PIL import Image, ImageDraw, ImageFont | |
| def create_ad_Template(punchline, button_text, logo_image, main_image, punchline_font_size, button_font_size): | |
| ad_Template_width, ad_Template_height = 800, 1000 | |
| ad_Template = Image.new("RGB", (ad_Template_width, ad_Template_height), "white") | |
| main_image = main_image.resize((300, 300)) | |
| ad_Template.paste(main_image, (250, 300)) | |
| logo_size = (200, 150) | |
| logo_image = logo_image.resize(logo_size) | |
| if logo_image.mode != 'RGBA': | |
| logo_image = logo_image.convert('RGBA') | |
| logo_position = (300, 50) | |
| ad_Template.paste(logo_image, logo_position, logo_image) | |
| draw = ImageDraw.Draw(ad_Template) | |
| font_path = 'fonts/arial.ttf' | |
| punchline_font = ImageFont.truetype(font_path, punchline_font_size) | |
| button_font = ImageFont.truetype(font_path, button_font_size) | |
| draw.text((400, 650), punchline, fill="black", font=punchline_font, anchor="mm", spacing=10, align="center", width=400) | |
| #button size based on text length and font | |
| button_text_size = button_font.getmask(button_text).getbbox()[2:] | |
| button_width = button_text_size[0] + 40 | |
| button_height = button_text_size[1] + 20 | |
| button_y_position = 800 | |
| button_x_position = 400 - button_width // 2 | |
| button_position = (button_x_position, button_y_position) | |
| corner_radius = 10 | |
| draw.rounded_rectangle([button_position, (button_position[0] + button_width, button_position[1] + button_height)], | |
| fill=(144, 238, 144), outline="black", radius=corner_radius) | |
| text_position = (button_x_position + button_width // 2, button_y_position + button_height // 2) | |
| draw.text(text_position, button_text, fill="black", font=button_font, anchor="mm") | |
| return ad_Template | |
| def show_ad_Template_generator_page(): | |
| st.title("Ad Template Generator") | |
| punchline = st.text_input("Enter the punchline text for the Ad Template:") | |
| punchline_font_size = st.select_slider("Select the font size for the punchline:", options=[i for i in range(1, 101)]) | |
| button_text = st.text_input("Enter the button text:") | |
| button_font_size = st.select_slider("Select the font size for the button text:", options=[i for i in range(1, 101)]) | |
| # Option to use the generated image or upload a new one | |
| use_generated_image = st.checkbox("Use the image generated by Stable Diffusion") | |
| logo_image = st.file_uploader("Choose a logo image...", type=["jpg", "jpeg", "png"]) | |
| if logo_image is not None: | |
| logo_image = Image.open(logo_image) | |
| main_image = None | |
| if use_generated_image and 'generated_image' in st.session_state: | |
| main_image = st.session_state['generated_image'] | |
| st.image(main_image, caption="Generated Image", use_column_width=True) | |
| else: | |
| uploaded_main_image = st.file_uploader("Choose the main image...", type=["jpg", "jpeg", "png"]) | |
| if uploaded_main_image is not None: | |
| main_image = Image.open(uploaded_main_image) | |
| generate_button = st.button("Generate Ad Template") | |
| if generate_button and punchline and button_text and logo_image and main_image: | |
| ad_Template = create_ad_Template(punchline, button_text, logo_image, main_image, punchline_font_size, button_font_size) | |
| st.image(ad_Template, caption="Generated Ad Template", use_column_width=True) | |