ImageGeneration / app_simple_img_generator.py
Arjun Singh
new face swapper
5b51ea4
raw
history blame
2.55 kB
import gradio as gr
import requests
import base64
from PIL import Image
import io
import json
import os
import numpy
#from dotenv import load_dotenv
#dotenv_path = '/.env'
#load_dotenv(dotenv_path)
# Get the API key from the environment variable
API_KEY = os.getenv('BASETEN_API_KEY')
API_url = os.getenv('BASETEN_COMFY_MODEL_URL')
def call_api_and_generate_image(negative_prompt, positive_prompt,seed):
if not API_KEY:
return None, "Error: API key not found in environment variables. Please set BASETEN_API_KEY."
resp = requests.post(
API_url,
headers={"Authorization": f"Api-Key {API_KEY}"},
json={
'workflow_values': {
'negative_prompt': negative_prompt,
'positive_prompt': positive_prompt,
'seed': seed
}
}
)
result = resp.json()
base64_data = result['result'][0]['data']
image_data = base64.b64decode(base64_data)
image = Image.open(io.BytesIO(image_data))
return image, json.dumps(result, indent=2)
def generate_image(positive_prompt, negative_prompt):
seed = numpy.random.randint(0, 2**32 - 1)
try:
return call_api_and_generate_image(negative_prompt, positive_prompt,seed)
except Exception as e:
return None, f"Error: {str(e)}"
def clear_fields():
return "", "", "" # Clear prompt and output, but not the API key
with gr.Blocks(theme='freddyaboulton/test-blue') as demo:
gr.Markdown("<center><h2>Arjun's Image Generator</h2></center>")
gr.Markdown("Hi there! I'm an AI assistant tasked with generating images.")
prompt = gr.Textbox(label='Positve Prompt', lines=2, max_lines=5, placeholder = 'Describe your image here.')
neg_prompt = gr.Textbox(label='Negative Prompt', lines=2, max_lines=10, value="Low quality, pixelated")
with gr.Group():
with gr.Row():
submit_btn = gr.Button(value="Submit", elem_id="generate_button", variant="primary", size="sm")
clear_btn = gr.ClearButton(value="Clear Question and AI Response", elem_id="clear_button", variant="secondary", size="sm")
gr.Markdown("<center><h3>AI Response</h3></center>")
image_output = gr.Image(type="pil", label="Generated Image")
json_output = gr.Textbox(label="API Response JSON", lines=10)
submit_btn.click(fn=generate_image, inputs = [prompt,neg_prompt], outputs=[image_output,json_output])
clear_btn.click(fn=clear_fields,outputs=[prompt,image_output,json_output, neg_prompt])
demo.launch()