Spaces:
Running
Running
File size: 3,895 Bytes
753e5f6 c6f24f8 753e5f6 2e415e8 753e5f6 c6f24f8 4ed1730 c6f24f8 2e415e8 4ed1730 2e415e8 c6f24f8 753e5f6 c6f24f8 c4fdee2 c6f24f8 753e5f6 7ca4dda c6f24f8 433e4de c6f24f8 753e5f6 7a84f3a 753e5f6 a340312 753e5f6 cc2aaf9 a340312 2e415e8 5194396 27a4093 c6f24f8 2036bc0 cc0c28f 2036bc0 27a4093 8ee7e50 c6f24f8 27a4093 cc2aaf9 753e5f6 43342c7 753e5f6 46e3f65 753e5f6 eec2048 753e5f6 46e3f65 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
import gradio as gr
import requests, base64, io
from dotenv import load_dotenv
import os, datetime
from PIL import Image
load_dotenv()
API_URL = os.environ.get("API_URL", "http://0.0.0.0:8021")
APP_ENV = os.environ.get("APP_ENV", None)
def image_to_base64(input_file):
if input_file is None:
return None
file_bytes = None
# Check if the input is a string (file path)
if isinstance(input_file, str):
with open(input_file, "rb") as file:
file_bytes = file.read()
else:
# Handle file-like object (_TemporaryFileWrapper)
file_bytes = input_file.read()
return base64.b64encode(file_bytes).decode()
# Assuming the API returns an image URL in the response
def generate_image(brand_name, primary_color, secondary_color, description, target_audience, font, logo_image, heading_text, sub_heading_text, image_layout, custom_graphic_prompt):
if logo_image:
logo_base64 = image_to_base64(logo_image)
else:
logo_base64 = ""
# Define your payload/data to send to the image generation API
data = {
"brand_name": brand_name,
"primary_color": primary_color,
"secondary_color": secondary_color,
"description": description,
"target_audience": target_audience,
"font": font,
"heading_text": heading_text or "",
"sub_heading_text": sub_heading_text or "",
"logo_url": logo_base64,
"user_prompt": custom_graphic_prompt,
"image_dimension": image_layout
}
# Make the API call
response = requests.post(API_URL, json=data)
# Ensure the API call was successful
if response.status_code != 200:
print(f"Error {response.status_code}: {response.text}")
return "Error: Unable to fetch image from the external API."
# Create the directory if it doesn't exist
image_directory = "images"
if not os.path.exists(image_directory):
os.makedirs(image_directory)
image_path = f"images/temp_image_{datetime.datetime.now().strftime('%Y%m%d%H%M%S')}.png"
with open(image_path, "wb") as image_file:
image_file.write(response.content)
return image_path
iface = gr.Interface(
fn=generate_image,
inputs=[
gr.components.Textbox(placeholder="Brand/Company Name", label="Brand Name"),
gr.components.ColorPicker(value="#FFFFFF", label="Primary Color"),
gr.components.ColorPicker(value="#05A592", label="Secondary Color"),
gr.components.Textbox(placeholder="Brief description of your brand and design guidelines", label="Description", lines=2),
gr.components.Textbox(placeholder="Your Brand's target audience", label="Target Audience"),
gr.components.Textbox(placeholder="Google Font Label i.e Rubik", label="Font"),
gr.components.File(label="Logo Image", scale=2, file_types=["jpg", "jpeg", "png", "gif", "bmp"]),
gr.components.Textbox(placeholder="Heading text (not required)", label="Heading Text"),
gr.components.Textbox(placeholder="Paragraph text (not required)", label="Sub Heading Text"),
gr.components.Dropdown(
choices=[
("Select Layout", "750x1334"),
("Mobile Portrait (750x1334)", "750x1334"),
("Mobile Landscape (940x470)", "940x470"),
("Square (2048x2048)", "2048x2048")
],
value="750x1334",
label="Image Layout"
),
gr.components.Textbox(lines=4, placeholder="Enter your custom dall-e 2-3 image prompt here (not required)", value="", label="Custom Graphic Prompt")
],
outputs=[
gr.components.Image(label="Generated Image")
],
title="Slidegen AI - Image generator",
description="Generate social media creatives from a few prompts",
live=False
)
# iface.queue()
# Run the interface
#trigger
iface.launch()
|