imagineV4.1 / app.py
rashidiqbal007's picture
update app.py
d7c52e9
import gradio as gr
import aiohttp
import asyncio
import random
import io
from PIL import Image
import os
from concurrent.futures import ThreadPoolExecutor
markdown_link = "For more generations, visit [Imagine Art](https://www.imagine.art/)."
TOKEN = os.getenv("TOKEN")
URL = os.getenv("URL")
if not URL:
raise ValueError("URL environment variable is not set.")
async def async_generation_request(request_data, is_user_premium):
seed = request_data.get("seed", random.randint(1, 10000000))
headers = {
"bearer": TOKEN,
"Style-Id": request_data["model_id"]
}
if is_user_premium:
headers["Premium"] = "True"
for key, value in headers.items():
if value is None:
raise ValueError(f"Header value is missing for key: {key}")
async with aiohttp.ClientSession() as session:
for i in range(3):
data = aiohttp.FormData()
data.add_field('prompt', request_data["prompt"], content_type='multipart/form-data')
data.add_field('style_id', request_data["model_id"])
data.add_field('seed', str(seed))
data.add_field('aspect_ratio', request_data["aspect_ratio"])
data.add_field('negative_prompt', request_data["negative_prompt"])
data.add_field('cfg', str(request_data["cfg_scale"]))
async with session.post(URL, data=data, headers=headers) as response:
if response.status == 200:
return await response.read()
print(f"Failed API Call: {response.status} >>> {await response.text()}")
return None
def run_async_in_thread(func, *args):
with ThreadPoolExecutor() as executor:
return executor.submit(asyncio.run, func(*args)).result()
def gradio_generation_request(prompt, aspect_ratio, negative_prompt, cfg_scale):
request_data = {
"prompt": prompt,
"model_id": "32",
"aspect_ratio": aspect_ratio,
"negative_prompt": negative_prompt,
"cfg_scale": cfg_scale,
"seed": random.randint(1, 10000000)
}
output = run_async_in_thread(async_generation_request, request_data, True)
if output:
return Image.open(io.BytesIO(output))
else:
return None
interface = gr.Interface(
fn=gradio_generation_request,
inputs=[
gr.Textbox(label="Prompt"),
gr.Textbox(label="Aspect Ratio"),
gr.Textbox(label="Negative Prompt"),
gr.Slider(minimum=1, maximum=15, value=7.5, label="CFG Scale")
],
outputs="image",
title='IMAGINE V4.1 GENERATION',
description=markdown_link
)
interface.launch()